जावास्क्रिप्ट: कैसे IE10, या प्रवास समस्याओं धूम्रपान करने के लिए

लेखक का पीछे हटना: उन लोगों पर पत्थर मत फेंको जिन्हें अलग-अलग ब्राउज़रों के लिए लिखना था!
मेरे काम में, ActiveX घटकों के उपयोग के कारण, केवल IE वर्तमान में समर्थित है। इसलिए, बाकी चर्चा केवल IE के विभिन्न संस्करणों पर लागू होती है।

IE10 एक विशेष ब्राउज़र है। IE के पिछले संस्करणों के लिए जो सच था, उसमें से अधिकांश ने काम करना बंद कर दिया है।
विरासत कोड प्रवास के दौरान होने वाली केवल जावास्क्रिप्ट त्रुटियों पर विचार किया जाता है। CSS में अंतर इस लेख के दायरे से परे है।

तो, नीचे IE10 में आम त्रुटियों की एक सूची है जो IE के पुराने संस्करणों से माइग्रेट करते समय होती है।

1. मैदान की सफाई के लिए एक क्रॉस



IE10 में, जब आप एक टेक्स्ट बॉक्स में प्रवेश करते हैं, तो एक क्रॉस दिखाई देता है, जिसे फ़ील्ड (छोटे क्षेत्रों को छोड़कर) को खाली करने के लिए डिज़ाइन किया गया है।

उस स्थिति में जहां प्रपत्र फ़ील्ड का ऑनलाइन सत्यापन उपयोग किया जाता है, साथ ही साथ फ़ील्ड के मूल्य के आधार पर कोई अन्य परिवर्तन, यह कई समस्याओं का वादा करता है। वे इस तथ्य से संबंधित हैं कि क्रॉस पर क्लिक करते समय फ़ील्ड साफ़ करना एक इनपुट ईवेंट है। इस स्थिति में, परिवर्तन ईवेंट (साथ ही कीडाउन, कीपर और कीप) नहीं होता है। अधिक सटीक रूप से, यह केवल तब होता है जब फोकस खो जाता है। सभी परिणामों के साथ, क्योंकि यह उपयोगकर्ता के लिए अपेक्षित व्यवहार नहीं है (सामान्य घटना से निपटने के दृष्टिकोण से)।

उसी समय, आप केवल IE10 दस्तावेज़ मोड में CSS का उपयोग करके इस क्रॉस को छिपा सकते हैं:

.someinput::-ms-clear { display: none; width: 0; height: 0; } 


संगतता मोड में, यह सुविधा उपलब्ध नहीं है। यह मूसडाउन / माउसअप को पकड़ने और यह जांचने के लिए रहता है कि क्लिक के बाद फ़ील्ड मान बदल गया है या नहीं। बहुत दुखद (हालांकि यह काम करता है)।

2. कोई XPath?



IE10 में, ActiveXObject ('MSXML2.XMLHTTP') की responseXml संपत्ति अब एक IXMLDocument नहीं है, लेकिन एक दस्तावेज़ जिसमें SelectSingleNode और selectNing विधियाँ नहीं हैं जो XPath ( स्रोत देखें) के साथ काम करती हैं।

प्रतिक्रिया सेट करने के लिए आउटपुट है:

 if (window.XMLHttpRequest) { try { ajaxXHR.responseType = "msxml-document"; } catch (e) { // ignore } } 


उसी समय, किसी को यह नहीं भूलना चाहिए कि दस्तावेज़ संस्करण 3.0 वापस आ गया है, जबकि पुराने संस्करणों में दस्तावेज़ संस्करण 2.0 वापस आ गया था। विभिन्न संस्करणों के दस्तावेज़ एक-दूसरे के साथ संगत नहीं हैं।

3. आप DOM मॉडल में कस्टम गुण नहीं जोड़ सकते



इसके बजाय, हम कस्टम विशेषताओं (getAttribute) (/ setAttribute ()) का उपयोग करते हैं। उसी समय, जब एक टैग में एक कस्टम विशेषता जोड़ते हैं, तो यह getAttribute () के माध्यम से उपलब्ध हो जाता है।

याद रखें कि कस्टम विशेषताएँ स्ट्रिंग होनी चाहिए, न कि ऑब्जेक्ट। IE10 में, सेटअट्रीब्यूट () में पास की गई वस्तुएँ स्ट्रिंग में बदल जाती हैं।

4. event.returnValue समर्थित नहीं हैं



इसके बजाय, preventDefault का उपयोग करें:

 if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } 





यदि जावास्क्रिप्ट कोड को स्थानांतरित करते समय किसी ने IE10 की अन्य विशेषताओं का सामना किया है - मुझे लेख में जोड़ने के लिए खुशी होगी, टिप्पणियों में लिखें।

Source: https://habr.com/ru/post/In189782/


All Articles