2009-07-04 7 views
8

マップがロードされると、このエラーalt text http://img239.imageshack.us/img239/6936/jserror.pngが発生します。その後、Open LayersのJavascript "unspecified error"

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

、それが働いたが:

エラーは、このライン上の元、無修正OpenLayers.jsファイルにされています

return!!(document.namespaces);

私はそれを書き換える試してみました私はdocument.namespacesへのさらなる参照で同じ "不特定"のエラーを受け取ります:

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

私はこれを書き換えてみました:

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

が、私は同じ "不明なエラー" を取得します。

私はInternet Explorer(私は7でテスト済み)ではなく、Firefoxでこのエラーが発生します。

手がかりはありますか?

ありがとうございました。

答えて

6

解決策が見つかりました。

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

あなたがしなければならないのは、onloadのイベントの後にマップを作成することです:

window.onload = function() { ... // create map here [CORRECT] 
+2

あなたとすべての.onloadイベントを上書きすることはほとんど我々はそう$(ウィンドウ)のために代わりに選んだ、windows.onloadとFirefoxで問題があった – Art

+0

を行うには良いことではありませんが.bind( "load"、function(){ – eclipse31

0

問題は、DOMは、jQueryを使って準備ができていたとき、私はマップを作成していたということでしたInternet Explorerの問題点は、ページが文書の準備やウィンドウの読み込みにヒットしたとき、そのM $ブラウザはマップキャンバスのディメンションをまだ決定できないということです。あなたがこの問題を回避したい場合は、あなたもあなたのマップのdiv寸法を設定することを検討できます。

<div id="map" style="width:250px;height:250px"></div> 
+0

ありがとう、私のバット!私は、幅YMMVではなく、高さを明示的に設定する必要がありました。 –

7

本当の問題は、(のために$(ドキュメント).readyをトリガーするときdocument.namespacesは時々IE8に準備ができていないということですVML)

あなたが代わりに使用することができます。

jQuery(window).load(function() {} ...); 
関連する問題