10

मैं IE में जावास्क्रिप्ट गुंजाइश 9.आईई फेंकता जावास्क्रिप्ट त्रुटि: संपत्ति के मूल्य 'googleMapsQuery' अशक्त या अपरिभाषित, नहीं एक समारोह वस्तु (अन्य ब्राउज़रों में काम करता है) है

इस के साथ एक वास्तविक समस्या आ रही है मेरे दस्तावेज़ के शरीर के अंदर है (हाँ, मुझे एहसास है कि उचित HTML के लिए स्क्रिप्ट को सिर में जाना चाहिए, लेकिन मैंने इसे पहले कभी एक स्क्रिप्ट तोड़ नहीं दी है)।

<script type="text/javascript"> 
function googleMapsQuery(accountNum) { 
    // function code is here (omitted for brevity) 
} 
</script> 

यह एक tbody अंदर एक tr ब्लॉक के अंदर एक td ब्लॉक के अंदर है: स्क्रिप्ट शरीर क्योंकि मैं एक स्क्रिप्ट के लिए एक साझा किए गए शीर्ष पृष्ठ के साथ गड़बड़ नहीं करना चाहते हैं कि इस पृष्ठ के लिए ही प्रासंगिक है में है एक table ब्लॉक के अंदर ब्लॉक body अंदर एक form ब्लॉक के अंदर:

<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button> 

मैं भी सिर्फ मामले स्क्रिप्ट समारोह घोषणा के क्रम में प्रासंगिक था (यह नहीं है) में प्रपत्र ऊपर स्क्रिप्ट ब्लॉक ले जाया गया।

स्क्रिप्ट फ़ायर्फ़ॉक्स और क्रोम में दोषरहित काम करता है, लेकिन आईई 9 (के साथ या पर संगतता दृश्य के बिना) में, मैं इस त्रुटि मिलती है:

SCRIPT5007: The value of the property 'googleMapsQuery' is null or undefined, not a Function object

मैं जावास्क्रिप्ट गुंजाइश अध्ययन किया, और मैं किसी भी कारण को समझ नहीं सकता क्यों आईई सोचता है कि 'googleMapsQuery' एक संपत्ति है, और यह अपरिभाषित क्यों है। यह एक समारोह है, और मैंने इसे परिभाषित किया!

+2

शरीर स्क्रिप्ट के लिए पूरी तरह से ठीक जगह है, शरीर के निचले हिस्से में वास्तव में पसंद किया जाता है :) –

+0

सिर में स्क्रिप्ट टैग को संसाधित करने से पहले सिंक्रनाइज़ (क्रमशः) संसाधित किया जाता है। शरीर में स्क्रिप्ट टैग अन्य स्क्रिप्ट्स और शेष डोम नोड्स के साथ असीमित रूप से लोड किए जाते हैं ... मैं

उत्तर

11

मुझे जवाब मिला, और जो मैंने बताया, उसके बावजूद, यह ब्राउज़र विशिष्ट नहीं था। बग मेरे फ़ंक्शन कोड में था, और किसी भी ब्राउज़र में हुआ होगा। यह इस तक उबाल जाता है। मेरे कोड में दो पंक्तियां थीं जो फ़ायरफ़ॉक्स/फ़ायरबग विशिष्ट थीं। उन्होंने console.log का इस्तेमाल किया। आईई में, उन्होंने एक त्रुटि फेंक दी, इसलिए मैंने उनसे टिप्पणी की (या तो मैंने सोचा)। मैंने उनको टिप्पणी करने के लिए एक क्रोधित नौकरी की, और मेरे समारोह में ब्रैकेटिंग तोड़ दी।

मूल संहिता (उस में console.log के साथ):

if (sxti.length <= 50) console.log('sxti=' + sxti); 
if (sxph.length <= 50) console.log('sxph=' + sxph); 

टूटी संहिता (टिप्पणियों के अंदर खो कोष्ठक):

if (sxti.length <= 50) { //console.log('sxti=' + sxti); } 
if (sxph.length <= 50) { //console.log('sxph=' + sxph); } 

फिक्स्ड कोड (फिक्स्ड कोष्ठक के बाहर टिप्पणियाँ):

if (sxti.length <= 50) { }//console.log('sxti=' + sxti); 
if (sxph.length <= 50) { }//console.log('sxph=' + sxph); 

तो, यह मेरा खुद का मैला कोडिंग था। फ़ंक्शन वास्तव में परिभाषित नहीं किया गया था, क्योंकि एक वाक्यविन्यास त्रुटि ने इसे बंद होने से रोक दिया था।

ओह ठीक है, रहते हैं और सीखते हैं। ;)

2

क्या आपने अर्धविराम onclick="googleMapsQuery(422111);" पर जोड़ने का प्रयास किया है। मेरे पास यह जांचने के लिए पर्याप्त कोड नहीं है कि क्या लापता अर्धविराम त्रुटि का कारण बनता है, लेकिन यानी वाक्यविन्यास के बारे में अधिक पसंद है।

+0

का उपयोग नहीं करता था सेमी-कोलन। समारोह को मेरे हिस्से पर कुछ गड़बड़ टिप्पणी और ब्रैकेटिंग के कारण वास्तव में अपरिभाषित किया गया था। एक सच्ची वाक्यविन्यास त्रुटि जो निष्पादन योग्य कोड होने पर भी मेरी स्क्रिप्ट को संकलित करने से रोकती है। ;) – chriv

0

बस कुछ ही मिनट पहले मुझे एक ही समस्या का सामना करना पड़ रहा था। मुझे समस्या है जो सिर्फ आपके jQuery को अन्य jQuery स्क्रिप्टिंग शुरू करने के बाद है। आखिरकार यह ठीक काम करेगा।

+8

यह उत्तर मुझे कोई समझ नहीं आता है। –

17

मुझे संपत्ति के साथ शून्य या अपरिभाषित एक समान समस्या थी।

यह समाप्त हो गया कि आईई के दस्तावेज़ मोड को आई 7 मानक में डिफॉल्ट किया जा रहा था।यह सभी इंट्रानेट साइटों (टूल्स>संगतता दृश्य सेटिंग>संगतता दृश्य में इंट्रानेट साइट्स प्रदर्शित करें) के लिए स्वचालित रूप से उपयोग किए जाने वाले संगतता मोड के कारण किया गया था।

+2

इससे मुझे बड़े पैमाने पर मदद मिली - यह पृष्ठ Google खोज के लिए पहली हिट थी "संपत्ति का मूल्य शून्य या अपरिभाषित है, फ़ंक्शन ऑब्जेक्ट नहीं है", और यह वह समाधान था जिसकी मुझे आवश्यकता थी। तो धन्यवाद! – benshepherd

0

तो मुझे एक ही त्रुटि के साथ एक ही स्थिति थी। मैं भूल गया कि मैंने अपनी देव मशीन पर संगतता मोड बदल दिया है और मेरे पास जावास्क्रिप्ट में एक console.log कमांड भी था। मैंने आईई में संगतता मोड को वापस बदल दिया, और console.log कमांड को हटा दिया। कोई और मुद्दा नहीं

संबंधित मुद्दे

 संबंधित मुद्दे