8

加载地图时,我收到此错误替代文本 http://img239.imageshack.us/img239/6936/jserror.png 。

错误在此行的原始未修改 OpenLayers.js 文件中:

return!!(document.namespaces);

我尝试将其重写为:

return (typeof(document.namespaces) != 'undefined');

并且它起作用了,但是在进一步引用 document.namespaces 时,我得到了相同的“未指定”错误:

if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns); ...

我尝试将其重写为:

if(typeof(document.namespaces.olv) == 'undefined') { ...

但我得到相同的“未指定错误”。

我只在 Internet Explorer(我在 7 上测试过)而不是 Firefox 上收到此错误。

有什么线索吗?

谢谢。

4

3 回答 3

7

真正的问题是在 IE8 中 document.namespaces 有时在触发 $(document).ready 时没有准备好(因为 VML)

您可以改用:

jQuery(window).load(function() {} ...);
于 2010-11-09T13:00:45.927 回答
6

我找到了解决方案。

问题是当 DOM 准备好 Jquery 时,我正在创建地图:

$(document).ready(function(){  ... //create map here [WRONG]

您所要做的就是在 onload 事件之后创建地图:

window.onload = function() { ... // create map here [CORRECT]
于 2009-07-06T07:42:15.797 回答
0

Internet Explorer 的问题在于,当页面点击文档就绪或窗口加载时,M$ 浏览器还不能确定地图画布的尺寸。如果你想解决这个问题,你也可以考虑设置你的地图 div 尺寸:

<div id="map" style="width:250px;height:250px"></div>
于 2009-07-23T16:38:08.737 回答