2009-07-04 9 views
8

Otrzymuję ten błąd alt text http://img239.imageshack.us/img239/6936/jserror.png podczas ładowania mapy.JavaScript "nieokreślony błąd" w otwartych warstwach

Błąd jest w oryginale złożyć niemodyfikowane OpenLayers.js na tej linii:

return!!(document.namespaces);

Próbowałem przepisanie go na adres:

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

i to działało, ale potem Otrzymuję te same "nieokreślone" błędy w dalszych odesłaniach do document.namespaces:

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

Próbowałem przepisanie tego:

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

ale ja się z tym samym "nieokreślony błąd".

Ten błąd występuje tylko w przeglądarce Internet Explorer (testowałem na 7), a nie w przeglądarce Firefox.

Jakieś wskazówki?

Dzięki.

Odpowiedz

6

Znalazłem rozwiązanie.

Problemem było to, że tworząc mapę kiedy DOM był gotowy z jQuery:

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

Wszystko co musisz zrobić, to stworzyć mapę po zdarzeniu onload:

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

Zastępowanie wszystkich zdarzeń .onload z waszymi ma chyba dobrą rzeczą do zrobienia – Art

+0

mieliśmy problemy w Firefoksie z windows.onload, więc zdecydowaliśmy się zamiast na $ (okno) .bind ("load", function() { – eclipse31

0

Problem z Internet Explorerem polega na tym, że kiedy strona trafi na gotowy dokument lub okno zostanie załadowane, przeglądarka M $ nie może jeszcze określić wymiarów płótna mapy. Jeśli chcesz, aby obejść ten problem, można również rozważyć wprowadzenie swoich map div wymiary:

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

Dzięki, uratowałeś moje tyłek! Musiałem tylko jawnie ustawić wysokość, a nie szerokość, YMMV. –

7

Prawdziwym problemem jest to, że nie jest gotowy document.namespaces w IE8 czasami podczas wyzwalania $ (document) .ready (z powodu VML)

można użyć zamiast:

jQuery(window).load(function() {} ...); 
Powiązane problemy