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


160

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

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

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

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


8
मुझे लगता है कि एक बेहतर प्रश्न यह होगा: मुझे दोनों ब्राउज़रों पर समान दिखने के लिए यह सीएसएस कैसे मिलेगा?
बेंटऑनकोडिंग

12
IE10 PP4 अभी भी @cc_onस्टेटमेंट का समर्थन करता है । तो, यह जानने के लिए कि IE10 समर्थित है या नहीं, आप निम्न कोड का उपयोग कर सकते हैं <!--[if !IE]><!--><script>if(/*@cc_on!@*/false){document.documentElement.className+=' ie10';}</script><!--<![endif]-->:। (मैंने इसे एक टिप्पणी के रूप में पोस्ट किया, चूंकि IE अभी भी विकास में है, इसलिए यह ज्ञात नहीं है कि अंतिम रिलीज इस सुविधा का समर्थन करता है)
रोब डब्ल्यू

15
@RobW - यानी 11 से बाहर होने के बाद आपका उदाहरण कोड गलत होगा। बेहतर संस्करण: <script>if(Function('/*@cc_on return document.documentMode===10@*/')()){document.documentElement.className+=' ie10';}</script>सुधार: सशर्त टिप्पणियों की आवश्यकता नहीं है; भले ही कम्प्रेशन स्ट्रिपिंग कम्प्रेशन / प्रोसेसिंग हो; ie11 के लिए कोई वर्ग नहीं जोड़ा गया; ie10 संगतता मोड में चल रहे ie11 के साथ काम करेंगे; स्टैंडअलोन स्क्रिप्ट टैग की जरूरत नहीं है (बस सिर में अन्य जावास्क्रिप्ट में जोड़ा जा सकता है)।
डकैत

2
उपरोक्त कोड स्निपेट का उदाहरण: jsbin.com/upofoq/2
robocat

8
एक अधिक सामान्य समाधान है: if(document.documentMode) document.documentElement.className+=' ie'+document.documentMode+'mode';- जो 90% मुद्दों को हल करता है (कभी-कभी संगतता मोड विफल हो जाते हैं, उस स्थिति में आपको उस के शीर्ष पर एक और स्तर तय करने की आवश्यकता होती है)।
डकैत

जवाबों:


65

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

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

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

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


3
मैं आप लोगों के बारे में निश्चित नहीं हूं, लेकिन मुझे == '10.0'काम करने के लिए इसका उपयोग करने की आवश्यकता है
lulalala

112
चेतावनी: jQuery.browserअब jQuery के मौजूदा संस्करण (1.9) में एक प्लगइन के बिना उपलब्ध नहीं है। blog.jquery.com/2013/01/15/…
dave1010

2
मैं सिफारिश करूंगा: IE के पुराने संस्करणों का पता लगाने के if (jQuery.browser.msie && jQuery.browser.version < 10) { // do what you will here }लिए वचन 10 पर ध्यान दें । IE10 और इसके बाद के संस्करण मेरे सभी CSS3, HTML5, jquery, आदि के साथ ठीक काम करते हैं
Dan Mantyla

1
@dan क्योंकि सभी IE ब्राउज़रों में सशर्त टिप्पणियां 10 से कम का उपयोग करती हैं, इसलिए सभी ब्राउज़रों के लिए आपके JS को अव्यवस्थित करने के बजाय उनका उपयोग करें। बस कहते हैं <! - [अगर lte IE 9]> और आप 10. से कम के सभी IE संस्करणों को लक्षित कर सकते हैं, तो कोई JS की आवश्यकता नहीं है।
एडहर्टिग

1
@ मार्क-आंद्रेलाफोर्ट ने एक अच्छी बात उठाई। अंगूठे के एक नियम के रूप में आपको हमेशा === ऑपरेटर का उपयोग करना चाहिए और == नहीं। जब जावास्क्रिप्ट लिखने के लिए आप इस से सावधान रहने की जरूरत है। stackoverflow.com/questions/359494/…
स्टीवर्ट

132

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

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

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

Internet Explorer 10 को लक्षित करने के लिए:

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

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

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

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


यह असली अच्छा है। लेकिन IE में ब्राउज़र मोड के खिलाफ विभिन्न दस्तावेज़ मोड का परीक्षण करते समय हमें कितना चिंतित होना चाहिए? किन स्थितियों में हम ऑनलाइन उपयोगकर्ताओं से उनके वर्तमान ब्राउज़र मोड से एक अलग दस्तावेज़ मोड का उपयोग करने की उम्मीद कर सकते हैं?
क्लेविस

लोग आमतौर पर दस्तावेज़ मोड को नहीं बदलते हैं। वे कर सकते हैं, लेकिन मैं किसी भी साइट पर नहीं आया हूं जो उपयोगकर्ता को दस्तावेज़ मोड को बदलने की आवश्यकता थी। यदि आप सही DOCTYPE का उपयोग कर रहे हैं तो यह कोई समस्या नहीं है।
रोनी

3
आप मेरे हीरो हैं! बस एक नोट, यह भी IE11 में गड़बड़ कुछ सामान तय
locrizak

8
यह IE11 को भी प्रभावित करता है - इसलिए यदि आप केवल IE9 / 10 को लक्षित करने के लिए समाधान की तलाश कर रहे हैं, तो यह काम नहीं करेगा :-(
लुकाज़ लेनार्ट

1
"उन सभी का क्या मतलब है जो ब्राउज़र का पता लगा रहे हैं navigator.userAgent"? सशर्त संकलन JScript रनटाइम की एक अंतर्निहित सुविधा है, जिसे उपयोगकर्ता-एजेंट स्ट्रिंग के माध्यम से ख़राब नहीं किया जा सकता है।
BoltClock

111

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

समाधान है:

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

यह

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

3
@ dave1010 उपयोगकर्ता एजेंट आसानी से खराब हो सकते हैं। सशर्त टिप्पणियाँ केवल JScript इंजन द्वारा समर्थित हैं, जो केवल IE4 + (10 सहित) में उपलब्ध है।
रॉब डब्ल्यू

2
@ dave1010 एक काम करने वाला पार्सर लिखना जो आपके द्वारा वर्णित किया जा रहा है वह कठिन और अत्यंत संभावना नहीं है। जो कोई भी जानबूझकर इस तरह के विस्तार को बनाता है और स्थापित करता है, वह सबसे अधिक "आईई (शायद गैर-विंडोज वातावरणों पर स्वचालित परीक्षण उद्देश्यों के लिए?") के समान है। ब्राउज़रों में 100% विश्वास की गारंटी कभी नहीं दी जाती है, लेकिन आप पर्याप्त रूप से पास हो सकते हैं। सशर्त टिप्पणियाँ JScript इंजन का पता लगाने का एक अत्यंत विश्वसनीय तरीका है, जिसका उपयोग IE द्वारा किया जाना है।
रोब डब्ल्यू

3
केवल नुकसान मैं देख सकता हूं कि इसके लिए js की आवश्यकता है, जो सशर्त नहीं किया
जेम्स वेस्टगेट

4
यह शीर्ष उत्तर होना चाहिए, और IE10 उपयोगकर्ताओं के लिए जेएस आवश्यकता को मूट किया जाना चाहिए - यदि जेएस को अक्षम किया गया है तो यह संभवतः सिर्फ NoScript एडऑन होगा। मुझे लगता है कि हमें NoScript की सरासर मूर्खता के बारे में और अधिक सार्वजनिक शिक्षा की आवश्यकता है (जैसे AdBlock या Ghostery जैसे समझदार लोगों के विपरीत)।
आयनो

8
मैं लेखक द्वारा प्रदान किए गए वैकल्पिक कोड का उपयोग करने का सुझाव देता हूं: if (/*@cc_on!@*/false && document.documentMode === 10) {}जो कि लाइनिंग कार्यक्रमों में स्पष्ट चेतावनी के आसपास मिलता है।
अंजबिवेन

62

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

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

क्या तुम सच में IE10 को लक्ष्य बनाना होगा, या तो सशर्त संकलन है जो अभी भी निकट भविष्य में समर्थन देख सकते हैं, या का उपयोग करते हैं - यदि आप इसे मदद कर सकते हैं - जैसी किसी सुविधा का पता लगाने पुस्तकालय का उपयोग Modernizr के बजाय (या के साथ संयोजन के रूप में) ब्राउज़र का पता लगाने। जब तक आपके उपयोग के मामले में सर्वर साइड पर IE10 को एनओस्क्रिप्ट या समायोजित करने की आवश्यकता होती है, तब तक उपयोगकर्ता-एजेंट की सूँघने से व्यवहार्य विकल्प की तुलना में अधिक सिरदर्द होने वाला है।

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

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


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

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


20
Chhhh, हाँ, IE10 अभी भी वेबकिट और गेको से बहुत पीछे है। मेरे पास कुछ CSS हैं जो webkit में सभी अच्छे हैं और IE10 में छिपे हुए हैं। अगर मुझे शैलियों को चुनिंदा तरीके से लागू करने का कोई रास्ता नहीं मिल रहा है, तो मुझे ऐसी शैलियों को छोड़ना होगा। :(
trusktr

2
यह इंगित करने के लायक है कि IE10 में सशर्त टिप्पणियों को हटा दिया गया था क्योंकि इसमें अब HTML5 पार्सर है। HTML5 पार्सिंग एल्गोरिथम के अनुसार सशर्त टिप्पणियां मान्य नहीं हैं। देखिए विरासत की धाराएँ blogs.msdn.com/b/ie/archive/2011/07/06/…
डेविड स्टोरी

3
@trusktr अगर आप इसे अच्छी तरह से कोड करते हैं तो यह सभी नवीनतम ब्राउज़रों में अच्छा लगेगा।
Klevis Miho

10
@KlevisMiho सच नहीं है, क्रोम और फ़ायरफ़ॉक्स का समर्थन करता है जो IE के पास नहीं है, भले ही इसे अच्छी तरह से कोडित किया गया हो। यदि आप "केवल सामान्य सुविधाओं का उपयोग करते हैं" तो इसका मतलब "कोड वेल" के समान नहीं है।
त्रुष्टक

5
@ दान मंतिला: उस मामले में,<!--[if !IE]><!-->stuff you don't want IE9 and below to see<!--<![endif]-->
बोल्टकॉक

36

शुरू करने के लिए एक अच्छी जगह IE मानक समर्थन प्रलेखन है

यहाँ जावास्क्रिप्ट में IE10 को लक्षित करने का तरीका बताया गया है:

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

यहाँ CSS में IE10 को लक्षित करने का तरीका बताया गया है:

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

यदि IE11 को CSS के माध्यम से फ़िल्टर या रीसेट करने की आवश्यकता है, तो एक और प्रश्न देखें: IE 11 के लिए CSS हैक कैसे लिखें?


5
आपका CSS समाधान IE11: \
Lukasz Lenart

11

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

<!--[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>

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

.ie10 .myclass1 { }

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


11

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

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

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


7

मैं इस स्क्रिप्ट का उपयोग करता हूं - यह पुरातन है, लेकिन एक अलग इंटरनेट एक्सप्लोरर 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 >

2
ठंडा। क्या आप उन @statements पर थोड़ी जानकारी जोड़ सकते हैं?
त्रिकुट्र

6

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

पसंद:

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

2
इसका कोई मतलब नहीं है कि स्ट्रिंग को ऊपरी तौर पर बढ़ाया जा सकता है क्योंकि स्ट्रिप संवेदनशील नहीं है;)
एमजीयूट

2
मैं हमेशा इसके लिए लुभाता हूं, लेकिन फिर याद रखें कि यह तब टूटता है जब सामने के छोर पर सीडीएन / कैश / प्रॉक्सी होता है।
जोहान

5

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

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

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


क्या `` !! `के लिए हैं?
फ्रांसिस्को कोरलस मोरालेस

4
String.match()यदि यह नहीं करता है तो मैच या अशक्त के लिए एक सरणी लौटाएगा। !(String.match())यह मैच के लिए गलत है या बिना मैच के सच है। !(!(String.match()))यह मैच के लिए सही है या किसी मैच के लिए गलत है। !(!(something))या !!somethingइसलिए किसी भी चीज़ को एक बूलियन सच / गलत में रूपांतरित करता है। stackoverflow.com/questions/784929/…
dave1010

@FranciscoCorralesMorales ओह, कई बार मुझसे पूछा गया है कि जब मेरा कोड जांच के अधीन है। :) dave1010 की महान टिप्पणी के विस्तार के रूप में, इसका उपयोग 'सत्य' या 'मिथ्या' मूल्यों को एक आंतरिक booleanमूल्य में करने के लिए किया जा सकता है , जैसे var name = 'me', hasName = !!name;
WynandB

4

यदि आप वेनिला जावास्क्रिप्ट के साथ IE 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

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

मैंने CodePen पर सभी गुणों के साथ एक परीक्षण पृष्ठ रखा है।


3

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

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

-1: लेकिन संस्करणों के बारे में क्या? आप कैसे बता सकते हैं कि कौन सा संस्करण है?
फ्रांसिस्को कोरलस मोरालेस

एज ब्राउज़र में "window.clipboardData" या तो नहीं है
AFD

@AFD यह सवाल IE के बारे में है, एज के बारे में नहीं।
टायलरएच

3

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

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

@media screen\0 {
    /* IE8,9,10 styles*/
}

1

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

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

केवल सच अगर> IE9



1

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

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/x.0/gजहां x = 4, 5, 6या 7(या शायद 8भविष्य के लिए)।


1

मैं सिर्फ IE पहचान के अपने संस्करण को जोड़ना चाहता था। यह http://james.padolsey.com/javascript/detect-ie-in-js-use-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;
}());

0

मेरे लिए निम्न कोड ठीक काम करता है, सभी सशर्त टिप्पणियाँ सभी 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 पर हूं, यकीन नहीं होता कि यह ie11 अपडेट से संबंधित है ...


1
(gt IE 11)बिट पूरी तरह से अनावश्यक है। आप <!--[if !(IE)]<!-->इसके बजाय बस कर सकते हैं।
BoltClock

अगर बोल्ट (gt IE 11) को छोड़ दिया जाए, और उपयोगकर्ता का ब्राउज़र IE 12 है (जब यह बाहर आता है) तो कोई html तत्व परिभाषित नहीं होगा।
लियोनार्डो गोंजालेज 15

0

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

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

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{
    .......
}


0

इस कोड को बदलने के लिए बैबल या टाइपस्क्रिप्ट का उपयोग करें

const browser = () => {
    // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3576.0 Safari/537.36"
    // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.17 Safari/537.36"
    // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763"
    // "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0"
    // "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko"
    // "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)"
    // "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)"
    // "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)"
    // "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)"
    const _userAgent = navigator.userAgent;
    const br = {
        "Chrome": "Chrome",
        "Edge": "Edge",
        "Firefox": "Firefox",
        ".NET CLR": "Internet Explorer 11",
    };
    const nobr = {
        "MSIE 10.0": "Internet Explorer 10",
        "MSIE 9.0": "Internet Explorer 9",
        "MSIE 8.0": "Internet Explorer 8",
        "MSIE 7.0": "Internet Explorer 7"
    };
    let thisBrow = "Unknown";
    for (const keys in br) {
        if (br.hasOwnProperty(keys)) {
            if (_userAgent.includes(keys)) {

                thisBrow = br[keys];

                for (const key in nobr) {
                    if (_userAgent.includes(key)) {
                        thisBrow = nobr[key];
                    }
                }

            }
        }
    }

    return thisBrow;
};


हाय Aliakandr, इस विचार के लिए धन्यवाद! निश्चित नहीं है कि किसी ने नीच क्यों, लेकिन मैंने उत्थान किया क्योंकि उत्तर कम से कम एक सहायक संकेत है। जो कोई भी डाउनवोट करता है, मददगार सलाह के साथ नए उपयोगकर्ता की मदद क्यों नहीं करता है?
trusktr

-2

इस जवाब से मुझे वहां 90% रास्ते मिल गए। मुझे अपना शेष उत्तर Microsoft साइट पर यहाँ मिला

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

एक .ie वर्ग जोड़ने के लिए jQuery का उपयोग करें (जो 1.9+ में उपयोगकर्ता एजेंटों के पक्ष में .browser, http://api.jquery.com/jQuery.browser/ ) का उपयोग करें:

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

"जो 1.9+ में उपयोगकर्ता एजेंटों के पक्ष में .browser को हटाता है" यह "उपयोगकर्ता एजेंटों के पक्ष में" नहीं कहता है - जो भी इसका मतलब है - यह सुविधा का पता लगाने के पक्ष में कहता है ।
BoltClock

-2

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

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

Http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither से व्युत्पन्न


1
मैंने आपका उत्तर -1 नहीं किया, लेकिन लिंक कुछ हद तक लगता है- आठ- थ । यह भी ध्यान देने योग्य है कि ओपी का उद्देश्य केवल IE10 और IE10 को लक्षित करना है। इसके बावजूद, आपका कोड स्निपेट IE10 या उससे अधिक या किसी अन्य गैर-IE ब्राउज़र के लिए काम नहीं करेगा, क्योंकि सशर्त टिप्पणियाँ केवल IE5 में IE9 तक समर्थित हैं।
व्यान्डब

-2

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

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

स्रोत


-4

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

html[data-useragent*='MSIE 10.0'] .any {
  your-style: here;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.