2

与问题相关: 来自 IE8 上的 Google Maps API 的未指定错误

在函数 function Mp(a,b){ .. } 中,以下代码行触发错误 var e=a.getBoundingClientRect();

  1. 复制此错误
    1. 制作一个谷歌地图页面(确保它足够高,以便您有足够的空间来滚动页面,不要让地图全屏显示)
    2. 放置标记
    3. 在调试模式下在 IE 中打开应用程序(我在 10 中测试过)
    4. 页面加载时,单击标记以显示信息窗口,即弹出窗口
    5. 尝试滚动页面

      你会得到错误。

getBoundingClientRect(),一个返回容器位置的IE特性。这些问题可能与工具提示有关,即信息窗口。

多看:http ://ejohn.org/blog/getboundingclientrect-is-awesome/

尝试了解决方案: google.maps.event.clearListeners(window, 'resize'); 它不起作用。

示例应用程序:https ://googledrive.com/host/0B-Y3wXhWdoQebnBUV2RNRWhJZE0/test-shell.html 礼貌:@user2250544

4

3 回答 3

9

这是一个肮脏的黑客,似乎有效,如果你喜欢那种东西:

HTMLElement.prototype.getBoundingClientRect = (function () { 
    var oldGetBoundingClientRect = HTMLElement.prototype.getBoundingClientRect; 
    return function() { 
        try { 
            return oldGetBoundingClientRect.apply(this, arguments); 
        } catch (e) { 
            return { 
                left: '', 
                right: '', 
                top: '', 
                bottom: '' 
            }; 
        } 
    }; 
})();
于 2014-05-07T21:35:25.593 回答
2

我在回发之前通过 Despose GMap 修复了错误:

unction fnGMap_initialize(strFrame) {
var divDealerMap = document.getElementById("divDealerMap");

var mapOptions = {
                zoom: 10,
                center: new google.maps.LatLng(50, 0), 
                mapTypeControl: true,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }

        oGMap = new google.maps.Map(divDealerMap, mapOptions);
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(oGMap_Dispose);
}


function oGMap_Dispose() {
    var divDealerMap = document.getElementById("divDealerMap");   
    if (divDealerMap) divDealerMap.parentNode.removeChild(divDealerMap);
}
于 2014-03-10T09:37:50.003 回答
0

如此处所述清除浏览器缓存:https: //support.google.com/maps/answer/21849?hl=en帮助我解决了类似问题

于 2013-12-03T08:08:36.940 回答