我有两个 jsbin 来说明代码:
http://jsbin.com/OdiSApI/1/edit 这将在 IE8 中触发警报 - 此警报位于调用函数 ExecuteSearch 中。
http://jsbin.com/OdiSApI/2/edit 这似乎在 IE8 中运行良好。
注意: 您需要单击右上角窗格中的Run with JS按钮。然后在下拉状态中的文本字段中输入一个城市并提交表单(这会调用谷歌地图地理编码 API)。
第二个链接中的“修复”如下:
//account for asynchronous nature of IE XDR request
//geo_location is undefined here in IE8
//this seems to fix ie8, though I'm not sure why...
var timeout = setTimeout(function() {
clearTimeout(timeout);
}, 10);
我遇到的问题是我必须为 IE8-9 使用 XDomainRequest (XDR)(部分 CORS 支持)。在第一个 jsbin 中,我在我的 ExecuteSearch 函数中点击了警报,因为我的 GeoCode 函数在我的 xdr.onload 触发之前返回。
超时似乎正在排队我的异步 XDR,尽管我不确定发生了什么以及为什么超时似乎是我的灵丹妙药。
有人有想法么?