2009-07-04 4 views
8

Я получаю эту ошибку alt text http://img239.imageshack.us/img239/6936/jserror.png, когда карта загружается.Javascript «неуказанная ошибка» в открытых слоях

ошибка в оригинале, неизмененные OpenLayers.js файл на этой линии:

return!!(document.namespaces);

Я попытался переписать его на:

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

, и она работала, но потом Я получаю такие же «неуказанные» ошибки при дальнейших перенаправлениях в пространство имен документов:

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

Я пытался переписывать это:

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

, но я получаю тот же "Неизвестная ошибка".

Я получаю эту ошибку только в Internet Explorer (я тестировал 7), а не в Firefox.

Любые подсказки?

Спасибо.

ответ

6

Я нашел решение.

Проблема заключалась в том, что я создавал карту, когда DOM был готов Jquery:

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

Все, что вам нужно сделать, это создать карту после того, как событие OnLoad:

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

Перезапись все .onload события с вашими вряд ли хорошая вещь, чтобы сделать – Art

+0

у нас были проблемы в Firefox с windows.onload, поэтому выбрали вместо $ (окно) .bind ("load", function() { – eclipse31

0

Проблема с Internet Explorer заключается в том, что, когда страница попадает в документ в готовность или в окно onload, этот браузер M $ не может определить размеры холста карты. Если вы хотите, чтобы обойти эту проблему, вы можете также рассмотреть вопрос о создании вашей карте размеры Div:

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

Спасибо, вы спасли мою приклад! Мне нужно было явно задавать высоту, а не ширину, YMMV. –

7

Реальная проблема заключается в том, что document.namespaces не готова в IE8 иногда, когда запуск $ (документ) .ready (из-за VML)

Вы можете использовать вместо:

jQuery(window).load(function() {} ...); 
Смежные вопросы