如何检测Google地方自动完成加载问题?

时间:2017-04-28 20:20:39

标签: autocomplete google-places-api

我成功使用了API,但今天早上遇到了错误" OOPS!出了点问题"坐在文本框中,用户无法输入。我发现这个问题是关键和固定的,然而,这表明可能会出现一些问题,并且由于这种阻塞,用户无法完成。我希望能够在javascript中检测到google.maps.places.Autocomplete对象是否存在问题,而不是将其绑定到文本框。

2 个答案:

答案 0 :(得分:0)

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

感谢有关人士的想法: 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();”;

答案 1 :(得分:0)

另一个选项: 加载约5秒钟后,Google将返回错误。 “ 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);
}