【发布时间】:2017-09-27 01:13:29
【问题描述】:
我已成功使用 API,但今天早上遇到错误,文本框中显示“糟糕!出了点问题”,用户无法输入。我发现该问题与密钥相关并已修复,但是,这表明可能会出现某些问题,并且由于此阻塞,用户无法完成。如果 google.maps.places.Autocomplete 对象存在问题并且不将其绑定到文本框,我希望能够在 javascript 中检测到。
【问题讨论】:
标签: autocomplete google-places-api
我已成功使用 API,但今天早上遇到错误,文本框中显示“糟糕!出了点问题”,用户无法输入。我发现该问题与密钥相关并已修复,但是,这表明可能会出现某些问题,并且由于此阻塞,用户无法完成。如果 google.maps.places.Autocomplete 对象存在问题并且不将其绑定到文本框,我希望能够在 javascript 中检测到。
【问题讨论】:
标签: autocomplete google-places-api
对于其他想要这样做的人。
感谢以下人员提供的想法: 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();";
【讨论】:
另一种选择: 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);
}
【讨论】: