2009-07-04 12 views
8

में मैं यह त्रुटि alt text 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') { ...

लेकिन मैं एक ही "अनिर्दिष्ट" मिलता है।

मैं केवल इंटरनेट एक्सप्लोरर पर यह त्रुटि प्राप्त और नहीं फ़ायरफ़ॉक्स में (मैं 7 पर परीक्षण)।

कोई सुराग?

धन्यवाद।

उत्तर

6

मैं समाधान मिल गया है।

समस्या यह है कि मैं नक्शा बनाने गया था जब डोम Jquery के साथ तैयार था:

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

आपको बस इतना करना है ऑनलोड घटना के बाद नक्शा बनाने के लिए है:

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

शायद ही – Art

+0

ऐसा करने के लिए हम windows.onload साथ फ़ायरफ़ॉक्स में समस्याएं थीं एक अच्छी बात है, तो $ के लिए बजाय का विकल्प चुना है (विंडो) .बिंद ("लोड", फ़ंक्शन() { – eclipse31

0

इंटरनेट एक्सप्लोरर के साथ समस्या यह है कि जब पृष्ठ दस्तावेज़ तैयार या विंडो ऑनलोड को हिट करता है, तो एम $ ब्राउज़र मानचित्र कैनवास के आयामों को निर्धारित नहीं कर सकता है। आप इस के आसपास काम करना चाहते हैं, तो आप भी अपने नक्शे div आयाम स्थापित करने पर विचार हो सकता है:

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

धन्यवाद, आपने मेरा बचाया बट! मुझे केवल ऊंचाई निर्धारित करने की आवश्यकता है, चौड़ाई नहीं, वाईएमएमवी। –

7

असली समस्या यह है कि document.namespaces IE8 में तैयार कभी कभी जब ट्रिगर $ (document) .ready (वजह से नहीं है VML)

इसके बजाय आप उपयोग कर सकते हैं: तुम्हारा साथ सभी .onload घटनाओं को ओवरराइट करने

jQuery(window).load(function() {} ...); 
संबंधित मुद्दे