दिलचस्प पोस्ट
एक्सएमएल स्कीमा और डीटीडी में क्या अंतर है? अमेज़ॉन लैम्ब्डा में मूवी, स्पीपी और नमू का उपयोग करना setImmediate vs. nextTick जावास्क्रिप्ट: ईवेंट श्रोता को हटा दें तेजी से: जब एक सेल में एक बटन टैप किया जाता है तो indexpath.row कैसे मिलता है? मैं पायथन में किसी फ़ंक्शन का गहरेकोपी कैसे बना सकता हूं? पता लगाएँ कि क्या हेडसेट एक एंड्रॉइड डिवाइस में प्लग किया गया है या नहीं। टास्क कन्स्ट्रक्टर में रद्दीकरण टोकन: क्यों? Google Map Fragment के अंदर वर्तमान स्थान दिखाएं WPF बनाम सिल्वरलाइट एएसपी.नेट "विशेष" टैग संकलन के दौरान -पीथ्रेड और -लैपथ्रेड के बीच का अंतर पायथन कैसे एक बार में लाइनों की संख्या को पढ़ने के लिए क्या वास्तविक समय वीडियो प्रोसेसिंग के लिए आईओएस 5.0 में कोर इमेज फिल्टर हैं? मैं mysqldump से छोटी फ़ाइलों में कैसे आउटपुट कर सकता हूं?

इंटरनेट एक्सप्लोरर-विशिष्ट सीएसएस या इंटरनेट एक्सप्लोरर-विशिष्ट जावास्क्रिप्ट कोड जैसी कुछ स्थितियों के लिए मैं केवल इंटरनेट एक्सप्लोरर 10 को कैसे लक्षित कर सकता हूं?

इंटरनेट एक्सप्लोरर-विशिष्ट सीएसएस या इंटरनेट एक्सप्लोरर-विशिष्ट जावास्क्रिप्ट कोड जैसी कुछ स्थितियों के लिए मैं केवल इंटरनेट एक्सप्लोरर 10 को कैसे लक्षित कर सकता हूं?

मैंने यह कोशिश की, लेकिन यह काम नहीं करता है:

<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]--> <!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]--> 

इंटरनेट एक्सप्लोरर 10 सशर्त टिप्पणियों की उपेक्षा करता है और <html class="no-js ie10" lang="en"> बजाय <html lang="en" class="no-js"> उपयोग करता है

वेब के समाधान से एकत्रित समाधान "इंटरनेट एक्सप्लोरर-विशिष्ट सीएसएस या इंटरनेट एक्सप्लोरर-विशिष्ट जावास्क्रिप्ट कोड जैसी कुछ स्थितियों के लिए मैं केवल इंटरनेट एक्सप्लोरर 10 को कैसे लक्षित कर सकता हूं?"

शायद आप इस तरह से कुछ jQuery की कोशिश कर सकते हैं:

 if ($.browser.msie && $.browser.version === 10) { $("html").addClass("ie10"); } 

इस पद्धति का उपयोग करने के लिए आपको jQuery के माइग्रेट लाइब्रेरी को शामिल करना होगा क्योंकि यह फ़ंक्शन मुख्य jQuery लाइब्रेरी से हटा दिया गया था।

मेरे लिए काफी अच्छा काम किया लेकिन सशर्त टिप्पणियों के लिए निश्चित रूप से कोई प्रतिस्थापन नहीं है!

मैं जावास्क्रिप्ट navigator.userAgent या $ .browser (जो navigator.userAgent एगेंट का उपयोग करता है) का उपयोग नहीं करेगा क्योंकि यह धोखा हो सकता है

इंटरनेट एक्सप्लोरर 9, 10 और 11 (नोट: नवीनतम क्रोम भी) को लक्षित करने के लिए:

 @media screen and (min-width:0\0) { /* Enter CSS here */ } 

इंटरनेट एक्सप्लोरर 10 को लक्षित करने के लिए:

 @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { /* IE10+ CSS here */ } 

एज ब्राउज़र को लक्षित करने के लिए:

 @supports (-ms-accelerator:true) { .selector { property:value; } } 

सूत्रों का कहना है:

  • मीडिया ब्लॉकों में Internet Explorer विशिष्ट सीएसएस को स्थानांतरित करना
  • CSS में इंटरनेट एक्सप्लोरर 10 और 11 को कैसे लक्षित करें I
  • विंडोज 10 और माइक्रोसॉफ्ट के एज वेब ब्राउजर के लिए सीएसएस हैक्स

मुझे इस साइट पर एक समाधान मिला, जहां किसी व्यक्ति को एक बहुमूल्य टिप्पणी मिली:

समाधान है:

 if (Function('/*@cc_on return document.documentMode===10@*/')()){ document.documentElement.className+=' ie10'; } 

यह

  • सशर्त टिप्पणियों की आवश्यकता नहीं है;
  • टिप्पणी स्ट्रिपिंग संपीड़न / प्रसंस्करण, भले ही काम करता हो;
  • इंटरनेट एक्सप्लोरर 11 में कोई IE10 वर्ग जोड़ा नहीं गया;
  • इंटरनेट एक्सप्लोरर 10 संगतता मोड में चल रहे इंटरनेट एक्सप्लोरर 11 के इरादे से काम करने की अधिक संभावना;
  • को स्वसंपूर्ण स्क्रिप्ट टैग की आवश्यकता नहीं है (केवल सिर में अन्य जावास्क्रिप्ट कोड में जोड़ा जा सकता है)।
  • परीक्षण करने के लिए jQuery की आवश्यकता नहीं है

इंटरनेट एक्सप्लोरर 10 अब सशर्त टिप्पणियों को पढ़ने का प्रयास नहीं करता है। इसका मतलब यह है कि यह किसी भी अन्य ब्राउज़र की तरह कंडीशनल टिप्पणियों का इलाज करेगा: नियमित एचटीएमएल टिप्पणियाँ, जिसका मतलब है कि पूरी तरह से ध्यान नहीं दिया जाएगा एक उदाहरण के रूप में प्रश्न में दिए गए मार्कअप को देखते हुए, IE10 सहित सभी ब्राउज़रों ने टिप्पणी के भाग को अनदेखा कर दिया, भूले हुए, संपूर्ण रूप से एचटीएमएल 5 मानक सशर्त टिप्पणी सिंटैक्स का कोई उल्लेख नहीं करता है, और इसी वजह से उन्होंने आईई 10 में इसका समर्थन करना बंद कर दिया है।

नोट, हालांकि, जेस्क्रिप्ट में सशर्त संकलन अभी भी समर्थित है, जैसा कि टिप्पणियों में दिखाया गया है और साथ ही हालिया जवाब भी। यह अंतिम रिलीज में या तो, jQuery.browser विपरीत नहीं जा रहा है। और जाहिर है, यह कहने के बिना ही जाता है कि उपयोगकर्ता-एजेंट सूँघना हमेशा की तरह नाजुक बना रहता है और कभी भी किसी भी परिस्थिति में उपयोग नहीं किया जाना चाहिए।

यदि आपको वास्तव में IE10 को लक्षित करना है, तो सशर्त संकलन का उपयोग करें, जो अभी भी निकट भविष्य में समर्थन देख सकते हैं, या – बेहतर अभी तक – ब्राउज़र पहचान के बजाय एक मॉड्यूलर डिज़ाइन लायब्रेरी का उपयोग करें। बहुत बोझल लगता है, लेकिन याद रखें कि आज के वेब मानकों के अनुरूप एक आधुनिक ब्राउज़र के रूप में, जो कि आपने इंटरऑपरेबल कोड लिखा है जो उच्च मानकों के अनुरूप है, आपको IE10 के लिए विशेष कोड को अलग रखना नहीं चाहिए , अर्थात यह व्यवहार और रेंडरिंग के मामले में अन्य ब्राउज़रों के समान है। 2 और यह दूर की तरफ लगता है, आईई के इतिहास को दिया गया है, लेकिन आपने फ़ायरफ़ॉक्स या क्रोम को कितनी बार आशंका जताई है कि आप निराशा से मिले हैं?

  • फ़ायरफ़ॉक्स ने साल के लिए box-sizing अपरिक्फिक्स का समर्थन नहीं किया
  • फ़ायरफ़ॉक्स ने ऐतिहासिक रूप से अजीब रूपरेखा व्यवहार किया है , और यह भी वर्षों के लिए मामला था
  • फ़ायरफ़ॉक्स ने तर्कसंगत तरीके से अपरिभाषित व्यवहार का हवाला देते हुए, तैनात तालिका-कोशिकाओं के लिए उचित तरीके से व्यवहार करने से इंकार कर दिया है , जबकि अन्य ब्राउज़र सिर्फ ठीक से सामना करते हैं
  • सफ़ारी और क्रोम में कुछ सीएसएस चयनकर्ताओं के साथ बहुत परेशानी होती है , कभी-कभी ऐसे फ़िक्सेस के साथ जो आपको वास्तव में आईई 5, आई 6 और आईई 7 के अच्छा राजभाषा दिन वापस ले जाता है
  • सामान्य रूप से पुनर्निर्माण विभाग में क्रोम को बहुत परेशानी होती है, उदाहरण के लिए जब मीडिया शैलियों को अपडेट नहीं किया जाता है तो ठीक से लेआउट को रिफॉल करने से नहीं; ऐसा प्रतीत होता है कि क्रोम की आधी की बगों को सिर्फ और फिर एक बार फिर से रंगे, फिर IE5 / 6/7-स्तर के सामान द्वारा मजबूर किया जा सकता है
  • वेबकिट के कुछ उपभेदों को कुछ विशेषताओं के समर्थन के बारे में स्पष्ट रूप से झूठ कहा जाता है, अर्थात् वे वास्तव में सभी चीजों की विशेषता का पता लगाने के तंत्र को हरा देते हैं

यदि आपके पास कुछ ब्राउज़रों को लक्षित करने का एक वैध कारण है, तो उन्हें हर तरह से सूंघना मैं सिर्फ यह कह रहा हूं कि आप इस तरह के कारण आज तक ऐसे कारणों को खोजने के लिए और अधिक कठिन-दबाया जा रहे हैं, और वास्तव में ऐसा कुछ नहीं है जो आप पर भरोसा कर सकते हैं।


1 न केवल IE10, लेकिन IE9, और यहां तक ​​कि IE8 जो परिपक्व CSS2.1 मानक क्रोम की तुलना में कहीं ज्यादा बेहतर हैं, क्योंकि बस IE8 मानकों के अनुपालन पर ध्यान केंद्रित किया गया था (उस समय सीएसएस 2.1 पहले से ही बहुत ही स्थिर अंतर से स्थिर था आज की सिफारिश से), जबकि क्रोम अल्ट्रा पॉलिस्टर तकनीक के डेमो के अत्याधुनिक छद्म मानकों से थोड़ा अधिक है।

2 और जब मैं यह कहूं तो पक्षपाती हो सकता है, लेकिन यह निश्चित रूप से नरक के रूप में होता है यदि आपका कोड अन्य ब्राउज़रों में काम करता है लेकिन आईई नहीं है, तो अंतर यह है कि IE10 के बजाय यह आपके अपने कोड के साथ एक मुद्दा है , 3 साल पहले, IE के पिछले संस्करणों के साथ तुलना में बेहतर है। फिर से, मैं पक्षपाती हो सकता है, लेकिन ईमानदारी से रहें: क्या आप भी नहीं हैं? बस अपनी टिप्पणियों को देखो

शुरू करने के लिए एक अच्छी जगह है IE मानक समर्थन दस्तावेज़ीकरण ।

जावा स्क्रिप्ट में आईई 10 को लक्षित करने का तरीका यहां है:

 if ("onpropertychange" in document && !!window.matchMedia) { ... } 

सीएसएस में आईई 10 को कैसे लक्षित करना है:

 @media all and (-ms-high-contrast: none) { ... } 

मामले में आईई 11 को सीएसएस के माध्यम से फ़िल्टर्ड या रीसेट करने की ज़रूरत है, दूसरा प्रश्न देखें: आईई 11 के लिए सीएसएस हैक कैसे लिखा जाए?

मैंने लेआउट इंजन नामक एक छोटी, वेनिला जावास्क्रिप्ट प्लगइन लिखा है, जो आपको साधारण 10 में (और हर दूसरे ब्राउज़र) को पहचानने में सुविधा देता है, जो कि उपयोगकर्ता एजेंट सूँघने के विपरीत, नकली नहीं किया जा सकता है

यह HTML टैग पर एक वर्ग के रूप में प्रतिपादन इंजन नाम जोड़ता है और एक जावास्क्रिप्ट ऑब्जेक्ट देता है जिसमें विक्रेता और संस्करण (जहां उपयुक्त हो)

मेरी ब्लॉग पोस्ट देखें: http://mattstow.com/layout-engine.html और गिटहब पर कोड प्राप्त करें: https://github.com/stowball/Layout-Engine

दोनों समाधान यहां पोस्ट किए गए (मामूली संशोधनों के साथ) काम:

 <!--[if !IE]><!--><script>if(/*@cc_on!@*/false){document.documentElement.className='ie10';}</script><!--<![endif]--> 

या

 <script>if(Function('/*@cc_on return 10===document.documentMode@*/')()){document.documentElement.className='ie10';}</script> 

आप अपने सीएसएस लिंक से पहले अपने एचटीएमएल पृष्ठ के शीर्ष टैग के अंदर उपरोक्त पंक्तियों में से एक को शामिल कर सकते हैं। और फिर सीएसएस फ़ाइल में आप अपनी शैली को माता-पिता के रूप में "ie10" वर्ग वाले निर्दिष्ट करते हैं:

 .ie10 .myclass1 { } 

और वोआला! – अन्य ब्राउज़र बरकरार रहते हैं और आपको jQuery की जरूरत नहीं है। आप उदाहरण को देख सकते हैं कि मैंने इसे कैसे लागू किया है: http://kardash.net

मैं इस स्क्रिप्ट का उपयोग करता हूं – यह जुलाब है, लेकिन एक अलग इंटरनेट एक्सप्लोरर 10 स्टाइल शीट या जावास्क्रिप्ट फ़ाइल को लक्षित करने में प्रभावी है, जो कि केवल ब्राउज़र ब्राउज़र इंटरनेट एक्सप्लोरर 10 में है, वैसे ही आप सशर्त टिप्पणियों के साथ करेंगे। कोई jQuery या अन्य प्लगइन की आवश्यकता नहीं है

 <script> /*@cc_on @if (@_jscript_version == 10) document.write(' <link type= "text/css" rel="stylesheet" href="your-ie10-styles.css" />'); @end @*/ </script > 

आप IE 10 के लिए एक स्टाइलशीट जोड़ने के लिए PHP का उपयोग कर सकते हैं

पसंद:

 if (stripos($_SERVER['HTTP_USER_AGENT'], 'MSIE 10')) { <link rel="stylesheet" type="text/css" href="../ie10.css" /> } 

यदि आपको ऐसा करना है, तो आप जावास्क्रिप्ट में उपयोगकर्ता एजेंट स्ट्रिंग देख सकते हैं:

 var isIE10 = !!navigator.userAgent.match(/MSIE 10/); 

जैसा कि अन्य लोगों ने उल्लेख किया है, मैं हमेशा इसके बजाय सुविधा का पता लगाने की सिफारिश करता था।

यदि आप वेइला जावास्क्रिप्ट के साथ आईई 10 को लक्षित करना चाहते हैं, तो आप सीएसएस प्रॉपर्टी का पता लगाने की कोशिश कर सकते हैं:

 if (document.body.style.msTouchAction != undefined) { document.body.className = 'ie10'; } 

सीएसएस गुण

msTouchAction बजाय आप इन सीएसएस गुणों में से एक का भी उपयोग कर सकते हैं, क्योंकि वे वर्तमान में केवल IE 10 में उपलब्ध हैं। लेकिन यह भविष्य में बदल सकता है।

  • msTouchAction
  • msWrapFlow
  • msWrapMargin
  • msWrapThrough
  • msScrollLimit
  • msScrollLimitXMin
  • msScrollLimitYMin
  • msScrollLimitXMax
  • msScrollLimitYMax
  • msFlexbox
  • msFlex
  • msFlexOrder

परीक्षण पृष्ठ

मैंने कोडपेन पर सभी गुणों के साथ एक परीक्षण पेज रखा है

clipBoardData एक ऐसा कार्य है जो केवल IE में उपलब्ध है, इसलिए यदि आप उन सभी IE संस्करणों को लक्षित करने की कोशिश कर रहे हैं जो आप उपयोग कर सकते हैं

 <script type="text/javascript"> if (window.clipboardData) alert("You are using IE!"); </script> 

IE10 + और IE9 के लिए सीएसएस

 @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { /* IE10+ styles */ } @media screen\0 { /* IE8,9,10 styles*/ } 

आप सुविधा का पता लगाने के लिए देख सकते हैं कि ब्राउज़र IE10 है या इससे अधिक बड़ा है:

 var isIE = false; if (window.navigator.msPointerEnabled) { isIE = true; } 

केवल सच => IE9

कंडीशनरी (डॉक्स देखें) ब्राउज़र सीएसएस वर्गों को आपके एचटीएमएल तत्व में जोड़ देगा, जिसमें आईओ 10 भी शामिल है।

मैं सिर्फ IE पहचान का मेरा संस्करण जोड़ना चाहता था यह http://james.padolsey.com/javascript/detect-ie-js-using-conditional-comments/ पर पाया एक स्निपेट पर आधारित है और यह भी समर्थन करने के लिए बढ़ाया ie10 और ie11 यह IE 5 से 11 का पता लगाता है

आपको बस इतना करना चाहिए कि कहीं और इसे जोड़ दें और फिर आप हमेशा एक साधारण स्थिति से जांच कर सकते हैं। वैश्विक isIE अगर यह एक IE नहीं है, या अन्यथा यह संस्करण संख्या होगी अनिर्धारित किया जाएगा। तो आप आसानी से चीजों को जोड़ सकते हैं जैसे if (isIE && isIE < 10) या समान रूप से।

 var isIe = (function(){ if (!(window.ActiveXObject) && "ActiveXObject" in window) { return 11; /* IE11 */ } if (Function('/*@cc_on return /^10/.test(@_jscript_version) @*/')()) { return 10; /* IE10 */ } var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', all[0] ); return v > 4 ? v : undef; }()); 

जावास्क्रिप्ट के साथ:

 if (/Trident/g.test(navigator.userAgent)) { // detect trident engine so IE document.getElementsByTagName('html')[0].className= 'no-js ie'; } 

सभी IE के लिए कार्य करें

 IE08 => 'Trident/4.0' IE09 => 'Trident/5.0' IE10 => 'Trident/6.0' IE11 => 'Trident/7.0' 

तो /Trident/g द्वारा /Trident/g /Trident/x.0/g /Trident/g x = 4, 5, 6 /Trident/x.0/g /Trident/g में /Trident/x.0/g जहां x = 4, 5, 6 या 7 (या भविष्य के लिए शायद 8 )।

मेरे लिए निम्न कोड ठीक काम करता है, सभी सशर्त टिप्पणियां सभी IE संस्करणों में काम कर रही हैं:

 <!--[if lt IE 7 ]> <html class="ie6"> <![endif]--> <!--[if IE 7 ]> <html class="ie7"> <![endif]--> <!--[if IE 8 ]> <html class="ie8"> <![endif]--> <!--[if IE 9 ]> <html class="ie9"> <![endif]--> <!--[if (gt IE 11)|!(IE)]><!--> <html> <!--<![endif]--> <script> if (document.documentMode===10){ document.documentElement.className+=' ie10'; } else if (document.documentMode===11){ document.documentElement.className+=' ie11'; } </script> 

मैं विंडोज़ 8.1 पर हूं, निश्चित नहीं कि यह आईए 11 अपडेट से संबंधित है …

यहां मैं इंटरनेट एक्सप्लोरर के लिए कस्टम सीएसएस कैसे करता हूं:

मेरी जावास्क्रिप्ट फ़ाइल में:

 function isIE () { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false; } jQuery(document).ready(function(){ if(var_isIE){ if(var_isIE == 10){ jQuery("html").addClass("ie10"); } if(var_isIE == 8){ jQuery("html").addClass("ie8"); // you can also call here some function to disable things that //are not supported in IE, or override browser default styles. } } }); 

और फिर मेरी सीएसएस फ़ाइल में, y प्रत्येक अलग शैली को परिभाषित करता है:

 .ie10 .some-class span{ ....... } .ie8 .some-class span{ ....... } 

http://suhasrathod.wordpress.com/2013/04/29/ie10-css-hacks/ देखें

 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* IE10-specific styles go here */ } 

इस जवाब में मुझे वहां का 90% हिस्सा मिला। मुझे माइक्रोसॉफ्ट साइट पर बाकी का जवाब मिला।

नीचे दिए गए कोड मैं सभी को लक्षित करने के लिए उपयोग कर रहा हूँ IME class को <html> जोड़कर

JQuery का उपयोग करें (जो उपयोगकर्ता एजेंटों के पक्ष में 1.9+ में बहिष्कृत है, देखें http://api.jquery.com/jQuery.browser/ ) .i क्लास को जोड़ने के लिए:

 // ie identifier $(document).ready(function () { if (navigator.appName == 'Microsoft Internet Explorer') { $("html").addClass("ie"); } }); 

यदि आप IE10 और इसके बाद के संस्करण और गैर IE ब्राउज़र के लक्ष्य को नहीं मानते हैं, तो आप इस सशर्त टिप्पणी का उपयोग कर सकते हैं:

 <!--[if gt IE 9]><!--> Your code here. <!--<![endif]--> 

http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither से प्राप्त

यदि आप वास्तव में हैं, तो आप निम्न पंक्ति को <head> जोड़कर सशर्त टिप्पणियां काम कर सकते हैं:

 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9"> 

स्रोत

सीएसएस के लिए आधुनिक समाधान

 html[data-useragent*='MSIE 10.0'] .any { your-style: here; }