2008-12-11 18 views
20

मुझे आईई 8 में आईई 8 में बहुत सारी जावास्क्रिप्ट त्रुटियां दिखाई दे रही हैं जो आईई 7 (और फ़ायरफ़ॉक्स, क्रोम और सफारी) में ठीक काम करती हैं। मुझे पता है कि आईई ने जावास्क्रिप्ट सुरक्षा जैसी चीज़ों में कुछ बदलाव किए हैं। इनमें से कुछ स्पष्ट त्रुटि संदेश नहीं देते हैं - क्रॉस-डोमेन उल्लंघनों जैसी चीजें बहुत अस्पष्ट अपवाद फेंक सकती हैं।IE8 में जावास्क्रिप्ट त्रुटियों के सबसे संभावित कारण क्या हैं?

जब हम IE8 जावास्क्रिप्ट त्रुटियों का निवारण कर रहे हैं तो शीर्ष अपराधियों की एक चेकलिस्ट बनाएं। कृपया एक सूचीबद्ध करें जिस तरह से IE8 जावास्क्रिप्ट है जो जावास्क्रिप्ट त्रुटि का कारण बनता है।

उत्तर

13

मैं सत्यापित कर सकता हूं कि "unique_username" द्वारा पोस्ट किए गए लोग सटीक हैं!

(उद्धरण) वास्तव में सामानों का एक टन बदल गया है।

सबसे पहले, यह वास्तव में महत्वपूर्ण है कि आप किस मोड में हैं। IE8 में, 3 (तीन) मोड हैं।

  • IE5 क्वर्क्स - अपने पृष्ठ नहीं doctype है, पेज renders IE5 तरह
  • IE 7 मानक मोड था - आप एक डॉक प्रकार है, लेकिन या तो IE8 मानकों मोड से बाहर जा चुके हैं, या स्थानीय होस्ट पर चल रहे हैं, या में "संगतता मोड"
  • आईई 8 मानक मोड - आप एक डॉक प्रकार है, और इंट्रानेट (डिफ़ॉल्ट मोड) पर हैं

अब, अगर आप IE5/IE7 मोड में प्रदान कर रहे हैं, तो कुछ भी नहीं है कि वहाँ छोड़कर बदल जाता है कुछ विधियों को जोड़ा जाएगा कि नहीं होना चाहिए अपने पेज में हस्तक्षेप करें।

हालांकि, यदि बहुमत की तरह, आप एक डॉक्टरेट सेट के साथ चल रहे हैं, और इस प्रकार आईई 8 मानक मोड में, निम्नलिखित परिवर्तन हुए हैं।

1.) document.getElementById(id); //now only returns the CORRECT matches! 

2.) .getElementsByName (नाम); // अब केवल कॉररेक्ट मैच लौटाता है! नहीं, तय नहीं!

3.) .getAttribute(name); //returns the CORRECT value for the given attribute! 
4.) .setAttribute(name, value); //actually SETS the name/value CORRECTLY (no more cAmElCaSe crud)! 
5.) CSS Expressions are NO LONGER allowed (deprecated) 
6.) Operation Aborted errors will still be thrown (in some cases) however the cases are fewer, and the error won't kill the entire page/DOM 
7.) The attributes[] array on elements should (from the RC build onwards) be correct in terms of contents, have a length, etc. 
8.) Button elements now submit the contents of the value attribute, NOT the HTML contents of the Button Tag 

वहाँ भी सीएसएस 2.1 फिक्स का एक समूह है, इसलिए चीजें हैं जो पहले अजीब गाया, या जरूरत हैक्स, ज्यादा बेहतर होना चाहिए। (अल्फा/पारदर्शिता के विवरण के लिए नीचे देखें - बड़े बदलाव हुए हैं)

विवरण के लिए IE Blog देखें।

इसके अलावा बग्स पर ठीक छोटाबीजवाला जानकारी के लिए Web Bug Track देखते हैं, IE8 (और अन्य सभी ब्राउज़रों) के लिए समाधान

एसवीजी, कोने गोल, ECMAScript आधारित घटना श्रोता, बेहतर फ़ॉर्म एलीमेंट डिजाइन/घटनाओं आदि अभी भी लापता हैं।

पीएस यदि आपके पास विशिष्ट समस्याएं हैं, तो हमें बताएं और हम उन्हें आपके लिए शिकार करने में मदद करेंगे। ;-)

अपडेट:

खिड़की।आकार बदलने की घटनाओं वर्तमान में IE8 Beta2 और IE8 साथी रिलीज 1 (सक्रिय नहीं होगा) अब आरटीएम में ठीक किया गया (बंद/व्यंग्य) का निर्माण

window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce) 
10

यहाँ एक वास्तव में मज़ा एक है कि मुझे पता चला में टूट रहे हैं। यदि आपके पास "टेक्स्ट/जावास्क्रिप्ट" के बजाय "एप्लिकेशन/जावास्क्रिप्ट" का एमआईएम प्रकार है, तो इंटरनेट एक्सप्लोरर:

ए) अप्रत्याशित MIME प्रकार को अनदेखा करें और फिर भी फ़ाइल का उपयोग करें?

बी) फ़ाइल को बिल्कुल लोड नहीं किया गया है?

सी) फ़ाइल की पहली सौ या तो पंक्तियां लें, उन्हें HTML में पहले आने वाली किसी अन्य जेएस फ़ाइल में प्रीपेड करें, और फिर आपको सभी प्रकार की त्रुटियां दें क्योंकि आपकी आउट ऑफ़ ऑर्डर आधा फ़ाइल + वास्तविक फ़ाइल काम नहीं करती है?

यह सही है, जवाब सी है ... मैं तुम्हें बच्चा नहीं हूं। आईई 6/7 में जेएस फ़ाइल कैशिंग को रोकने के लिए हम "एप्लिकेशन/जावास्क्रिप्ट" एमआईएमई प्रकार का उपयोग करते थे, और नतीजतन मैंने यह पता लगाने की कोशिश की कि पूरे दिन आईई 8 वास्तव में पागल त्रुटियां क्यों दे रहा था। सौभाग्य से मैंने अंततः यह पता लगाया कि क्या चल रहा था जब मुझे बताया गया कि मुझे 500 लाइन फ़ाइल के लाइन 650 पर एक त्रुटि हुई थी (और फिर जब मैंने डीबगर में फ़ाइल देखी तो मैंने पिछली अन्य फाइल देखी)।

कहानी का नैतिक: यदि आप IE8 को काम करना चाहते हैं तो अपने जेएस फाइलों के एमआईएमई प्रकार के लिए "एप्लिकेशन/जावास्क्रिप्ट" का उपयोग न करें।

+0

यह पता चला कि HTTP प्रतिक्रिया शीर्षलेख के MIME प्रकार को बदलना पर्याप्त नहीं था; अंततः मैं पूरी तरह से हमारे जावास्क्रिप्ट सर्वलेट को त्यागने के लिए घायल हो गया, क्योंकि जेएस फाइलें अपाचे द्वारा स्थिर रूप से काम करती थीं आईई 8 में ठीक काम करती थीं (और मैं सर्वलेट के शीर्षकों को ठीक करने में अधिक समय बर्बाद नहीं करना चाहता था)। – machineghost

+1

और मैंने सोचा कि मैं पागल हो रहा था !!! क्या यह "मानक" होने का अनुमान नहीं है ??? एप्लिकेशन/जावास्क्रिप्ट आईई 8 के साथ बस मेरी क्रॉस साइट जेएसओएनपी तोड़ता है ... धन्यवाद! – jldupont

+1

यह IE9 के लिए भी सच साबित होता है। –

1

इस पार्टी के लिए थोड़ा देर हो चुकी है लेकिन उसी प्रश्न पर शोध करने में मैं इस MSDN आलेख में आया था जो आईई 8 के जेस्क्रिप्ट इंजन द्वारा समर्थित कार्यों को हाइलाइट नहीं करता है।