【问题标题】:How to detect Google places AutoComplete load issues?如何检测 Google 地方自动完成加载问题?
【发布时间】:2017-09-27 01:13:29
【问题描述】:

我已成功使用 API,但今天早上遇到错误,文本框中显示“糟糕!出了点问题”,用户无法输入。我发现该问题与密钥相关并已修复,但是,这表明可能会出现某些问题,并且由于此阻塞,用户无法完成。如果 google.maps.places.Autocomplete 对象存在问题并且不将其绑定到文本框,我希望能够在 javascript 中检测到。

【问题讨论】:

    标签: autocomplete google-places-api


    【解决方案1】:

    对于其他想要这样做的人。

    感谢以下人员提供的想法: Capturing javascript console.log?

    // error filter to capture the google error
    (function () {
        var oldError = console.error;
    
        console.error = function (message) {
            if (message.toLowerCase().includes("google maps api error")) {
                document.getElementById('<%=hdnGoogleSelected.ClientID %>').value = "DISABLE";
                triggerUpdatePanel();
                //alert(message);
            }
    
            oldError.apply(console, arguments);
        };
    })();
    

    我的在更新面板中,所以我触发了更新,将 onfocus 设置回 this.select();用于有效禁用自动完成尝试的文本框。

    tbAddress1.Attributes["onfocus"] = "javascript:this.select();";

    【讨论】:

      【解决方案2】:

      另一种选择: Google 将在加载后约 5 秒后返回错误。 “gm-err-autocomplete” 类指示自动完成组件的任何错误。

      您可以定期检查 google 返回的错误类别。加载后我做了 10 秒:

      function checkForGoogleApiErrors() {
          var secCounter = 0;
          var googleErrorCheckinterval = setInterval(function () {
              if (document.getElementById("AddressAutocomplete").classList.contains("gm-err-autocomplete")) {
                  console.log("error detected");
                  clearInterval(googleErrorCheckinterval);
              }
              secCounter++;
              if (secCounter === 10){
                  clearInterval(googleErrorCheckinterval);
              }
          }, 1000);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 2012-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多