2011-08-15 14 views
5

मैं 1.6.2 के लिए jQuery 1.4.2 से अपग्रेड पर जावास्क्रिप्ट को निष्पादित करने की कोशिश कर रहा है और अब मैं त्रुटि मिलती है (आईई में) एक त्रुटि फेंकता है।jQuery 1.6.2 के उन्नयन के बाद, globalEval जब पेज

"Error: Could not complete the operation due to error 80020101."

डेटा पैरामीटर कि निष्पादित हो पृष्ठ पर जावास्क्रिप्ट चर <!-- --> से घिरा हुआ है: मैं पेज कि jQuery globalEval() समारोह द्वारा निष्पादित हो जाता है पर JavaScript है

// Evaluates a script in a global context 
// Workarounds based on findings by Jim Driscoll 
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context 
globalEval: function(data) { 
    if (data && rnotwhite.test(data)) { 
     // We use execScript on Internet Explorer 
     // We use an anonymous function so that context is window 
     // rather than jQuery in Firefox 
     (window.execScript || function(data) { 
      window[ "eval" ].call(window, data); 
     })(data); 
    } 
}, 

आईई में कॉल अपवाद फेंकता

<!-- 
var id = \"ctrl90900\"; 

var url = \"myur.com/blah.html\"; 

--> 

मैं IE9 उपयोग कर रहा हूँ, और jQuery 1.6.2 निश्चित नहीं है कि इससे कोई त्रुटि क्यों होगी।

+1

यह काम करता है अगर आप टिप्पणी निकालना चाहते हैं? यह वैध जावास्क्रिप्ट नहीं है। – alex

+0

'$ .globalEval()' -> 'str = str.replace (/ /, '$ 1'); '[jsFiddle] (http://jsfiddle.net/alexdickson/GUf7Q/)। – alex

+0

@alex है कि यह किया गया था। धन्यवाद! –

उत्तर

1

यह कोड है, जो अवैध जावास्क्रिप्ट और unnecessary in this day and age है की टिप्पणी हो सकता है।

आप इस regex के साथ इसे बाहर पट्टी कर सकते हैं ...

$.globalEval(str.replace(/<!--\s*([\s\S]*?)\s*-->/, '$1')); 

jsFiddle

+0

सीडीएटीए में रैपिंग जावास्क्रिप्ट कोड की तरह दिखने का तरीका है और यह https://developer.mozilla.org/en/Writing_JavaScript_for_XHTML वर्णित एक जैसी समस्याएं नहीं बना रहा है –

2

यदि वहाँ any error at all in a script passed to execScript, जहाँ तक इंटरनेट एक्सप्लोरर का संबंध है है, यह मूल त्रुटि के बजाय एक 80,020,101 रिपोर्ट करेंगे।

तो, भी लापता अर्धविराम के लिए जाँच करें और जे एस आईई द्वारा समर्थित नहीं हैं।

शॉर्ट कोड मार्ग के लिए, मैंने पाया सबसे प्रभावी डिबगिंग तकनीक कोड के कुछ हिस्सों बाहर टिप्पणी करने के लिए करें और देखें कि त्रुटि अभी भी जाता था। यदि ऐसा नहीं होता है, तो कोड ब्लॉक की जांच करें जिसे उपर्युक्त त्रुटियों के लिए अभी टिप्पणी की गई थी।

+0

'{foo: 'bar'} 'पूरी तरह से मान्य है और आईई में एक त्रुटि फेंक नहीं देगा जब तक यह एक वाक्य रचनात्मक रूप से वैध अभिव्यक्ति का हिस्सा न हो। –

+0

आप सही हैं, धन्यवाद। अपडेट किया गया। – cmc

0

बस इस के लिए एक सा जोड़ना चाहते थे - मैं जब भी एक AJAX के तथाकथित PHP स्क्रिप्ट है कि जावास्क्रिप्ट शामिल करने में कोई त्रुटि 80,020,101 हो रही थी। स्क्रिप्ट PHP फ़ाइल के अंदर भी किसी भी तरह तोड़ दिया गया था, और नामित div में स्क्रिप्ट के किसी भी प्रस्तुत करने के लिए मना कर (PHP के अन्य तत्वों के माध्यम से आया था, लेकिन जावास्क्रिप्ट के अंदर कुछ भी नहीं - मैं एक चार्ट HighChart का उपयोग कर आकर्षित करने के लिए कोशिश कर रहा था)।

बाहर कर देता है शामिल PHP फ़ाइल में जावास्क्रिप्ट के अंदर एक अपरिभाषित पीएचपी समारोह (कुछ पाठ प्रतिध्वनित करने के लिए प्रयोग किया जाता) नहीं था। मैंने फ़ायरबग का उपयोग करके यह पाया।

तो लब्बोलुआब यह सुनिश्चित करें कि आप कोड AJAX के माध्यम से वापस आ रहा अंदर किसी भी अपरिभाषित कार्यों की जरूरत नहीं है बनाते हैं।

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