मैं jQuery के साथ IE 8 का पता कैसे लगाऊं?


102

मुझे jQuery का उपयोग करके न केवल ब्राउज़र प्रकार, बल्कि संस्करण का पता लगाने की आवश्यकता है। ज्यादातर मुझे यह पता लगाने की जरूरत है कि यह IE 8 है या नहीं।

मुझे यकीन नहीं है कि मैं इसे सही तरीके से कर रहा हूं।

यदि मैं करता हूँ :

if (jQuery.browser.version >= 8.0) {
dosomething}

मुझे यकीन नहीं है कि यह 8.123.45.6 संस्करण के लिए काम करेगा या होगा?

संपादित करें: ध्यान दें कि JQuery 2+ ने IE8 और उससे नीचे के लिए समर्थन छोड़ दिया है, और इसलिए अब IE8 का पता लगाने के लिए उपयोग नहीं किया जा सकता है। यदि JQuery के वर्तमान संस्करण का उपयोग कर रहे हैं, तो गैर-JQuery समाधान का उपयोग करना आवश्यक है।


11
नीचे दिए गए उत्तर आपको jQuery.browser का उपयोग करने का सुझाव देते हैं। हालाँकि, jQuery के दस्तावेज़ jQuery.browser के उपयोग को दर्शाते हैं। इसके बजाय, वे सुझाव देते हैं कि आप jQuery.support का उपयोग करें और उस सुविधा को इंगित करें जो ब्राउज़र को ध्वजांकित करने के लिए समर्थित नहीं है। उदाहरण के लिए, यदि आप (jQuery.support.opacity == false) {अपने IE8 और IE7 कोड} का उपयोग कर सकते हैं
IberoMedia

यह jquery.support.opacityसिर्फ वही हुआ जो मैं चाहता था। धन्यवाद ...
१२


यदि आप ठीक से काम कर रहे हैं, तो आपको ब्राउज़र संस्करण का पता लगाने की आवश्यकता शायद ही हो। एक कारण है कि इस सुविधा को jQuery से हटा दिया गया था, और वह कारण यह है कि ब्राउज़र संस्करण का पता लगाना खराब अभ्यास है। इसके बजाय फीचर डिटेक्शन का उपयोग करने से लगभग सभी मामलों में समस्या का समाधान हो जाएगा।
स्पडली

2
मुझे IE8 का पता लगाने की आवश्यकता है क्योंकि यह एकमात्र ब्राउज़र है जो जावास्क्रिप्ट इंजन इतना धीमा है कि यह एक संवाद लाता है जो कहता है कि "क्या आप इस पृष्ठ पर" स्क्रिप्ट चलाना बंद करना चाहते हैं, और डिफ़ॉल्ट "हाँ" है। यदि इसके लिए कोई फीचर-डिटेक्शन मैकेनिज्म है, तो मैं इसका उपयोग करूंगा। अन्यथा यह ब्राउज़र == IE8 है। मैं जावास्क्रिप्ट को ऑप्टिमाइज़ नहीं कर सकता, क्योंकि यह केंडो का अपना
ट्रीव्यू

जवाबों:


79

यह jQuery एपीआई प्रलेखन में प्रलेखित है । Internet Explorer के साथ की $.browser.msieजाँच करें और फिर इसके संस्करण की जाँच करें $.browser.version

अद्यतन: $ .browser jQuery 1.9 में हटा दिया गया

JQuery.browser () विधि jQuery 1.3 के बाद से हटा दी गई है और 1.9 में हटा दी गई है। यदि आवश्यक हो, तो यह jQuery माइग्रेट प्लगइन के भाग के रूप में उपलब्ध है। हम आधुनिक लाइब्रेरी जैसे लाइब्रेरी के साथ फीचर डिटेक्शन का उपयोग करने की सलाह देते हैं।


अगर मैं करता हूं: अगर (jQuery.browser.version> = 8.0) {dosomething} मुझे यकीन नहीं है कि यह संस्करण 8.123.45.6 के लिए काम करेगा या होगा?
19

13
यह एक स्ट्रिंग है, इसलिए आपको करना चाहिए if(jQuery.browser.version.substring(0, 2) == "8.") { ... }। इस तरह यह IE8 के सभी संस्करणों के साथ काम करेगा।
एंडीडॉग

13
jQuery.browser1.3 में पदावनत किया गया और भविष्य में एक प्लगइन में ले जाया जा सकता है।
बेंडायट्री

शुक्र है कि यह अभी भी इधर-उधर है और यहाँ पर प्रतिनियुक्ति का कोई उल्लेख नहीं है, @bendytree
एलेस्टेयर

47
jquery.browser को 1.9 में हटा दिया गया है
मंदीप जैन

173

मुझे लगता है कि यह सबसे अच्छा तरीका होगा:

HTML5 बॉयलरप्लेट से:

<!--[if lt IE 7]> <html lang="en-us" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7]>    <html lang="en-us" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="no-js ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]-->

जेएस में:

if( $("html").hasClass("ie8") ) { /* do your things */ };

विशेष रूप $.browserसे jQuery 1.9+ से हटा दिया गया है।


11
यह IE संस्करणों का पता लगाने का एक बहुत ही चतुर तरीका है। मुझे ढेर सारा पसंद है!
ग्रेग

लेकिन आपकी वेबसाइट 'सामग्री-प्रकार: एप्लिकेशन / xhtml + xml' शीर्षक के साथ वितरित नहीं होती है, तो इन सशर्त टिप्पणियों की अनदेखी की जाती है
फिलिप सिप

1
बहुत चालाक ... लेकिन ध्यान देने योग्य है कि आपको HTML5BP में सशर्त द्वारा जोड़े गए वर्तमान वर्गों की जांच करने की आवश्यकता है। फिलहाल मुझे लगता है कि क्लास lt-ie9AOT हैie8
byronyasgur

2
@meo मुझे यह कार्यान्वयन भी पसंद है। लेकिन क्या एक वजह है जिसके <html>बदले वर्ग जुड़ा हुआ है <body>?
विश्राम

@meo दिलचस्प। धन्यवाद।
विश्राम


56

यह न भूलें कि IE8 का पता लगाने के लिए आप HTML का उपयोग भी कर सकते हैं।

<!--[if IE 8]>
<script type="text/javascript">
    ie = 8;
</script>
<![endif]-->

इससे पहले कि आपकी सभी लिपियाँ आपको "यानी" चर या जो कुछ भी देखती हैं, आपको बता दें।


4
यह वाक्यविन्यास भी "कम से कम" ("[अगर लेट आईई 7]") और "से बड़ा" ("[अगर आईई 8 आईएन" ") तुलना का समर्थन करता है।
spiffytech

1
<! - [अगर lte IE 8]> ie8 को शामिल करने के लिए
14:22 पर user227353

1
यह करने का सबसे अच्छा तरीका है, बस दूसरे पृष्ठ पर पुनर्निर्देशित करता है जो कहता है कि "आप IE8 का उपयोग क्यों कर रहे हैं?" अभी अपग्रेड करें!
लियोन गबन

2
आज के मानक के अनुसार, मैं उनसे पूछूंगा कि वे IE का उपयोग क्यों कर रहे हैं।
TheBuzzSaw

यह अब JQuery 2.1.1 IE8 के साथ काम नहीं करता है, और इसलिए IE8 का पता लगाने के लिए इस्तेमाल नहीं किया जा सकता है क्योंकि यह सबसे अच्छा समाधान की तरह लग रहा है!
डेव

27

document.documentMode अपरिभाषित है अगर ब्राउज़र IE8 नहीं है,

यह मानक मोड के लिए 8 और 'IE7 के अनुकूल' के लिए 7 लौटाता है

यदि यह IE7 के रूप में चल रहा है तो बहुत सीएसएस और डोम विशेषताएं हैं जो समर्थित नहीं होंगी।


9
ध्यान दें कि IE9 रिटर्न 9. यह एक उच्च-मतदान जवाब होना चाहिए, हालांकि, अब $ .browser अब एक अच्छा समाधान नहीं है। कोशिश करें:if ((document.documentMode || 100) < 9) { // IE8
डॉन मैकडी

if (document.documentMode! == undefined && document.documentMode == 8) {...}
jpprade

कुछ अनुप्रयोगों के लिए जहां IE8 अभी भी बहुत अधिक उपयोग में है - अर्थात्, यूएस स्कूल - @ डॉन मैककरी का दृष्टिकोण सरल और प्रभावी दोनों है। मॉडर्निज़्र के साथ मिलकर यह ठीक काम करता है।
cbmtrx

बहुत बढ़िया जवाब! यह IE8 के माध्यम से IE11 के लिए संस्करण संख्या देता है (सशर्त टिप्पणियों के लिए IE9 के माध्यम से IE5 की तुलना में - अगर किसी को अभी भी वास्तविक IE7 या IE6 का पता लगाने की आवश्यकता है, तो आपको सशर्त टिप्पणियों का उपयोग करने की आवश्यकता होगी)। ध्यान दें कि डॉक्स के अनुसार यह 0पृष्ठ लोड होने के दौरान वापस आ सकता है - "बाद के समय में दस्तावेज़ संगतता मोड निर्धारित करने का प्रयास करें" (यानी दस्तावेज़ तैयार होने के बाद)।
user56reinstatemonica8

15

मान लिया जाये कि ...

  • ... कि यह IE के पुराने संस्करणों का क्रंकी रेंडरिंग इंजन है जिसका आप पता लगाने में रुचि रखते हैं, एक स्टाइल को पुराने IE में ठीक से देख सकते हैं (अन्यथा, फीचर डिटेक्शन का उपयोग करें)
  • ... कि आप सिर्फ HTML में सशर्त टिप्पणी नहीं जोड़ सकते - जे एस प्लगइन्स कि किसी भी पन्ने (अन्यथा, बस पर सशर्त वर्गों की चाल करने के लिए लागू किया जा सकता के लिए उदाहरण के लिए <body>या <html>)

... तो यह शायद सबसे अच्छी चाल (पर आधारित) है इस गैर- jQuery , थोड़ा कम लचीला संस्करण )। यह तब के लिए परीक्षण बनाता है और एक उपयुक्त सशर्त टिप्पणी को हटा देता है।

(IE10 + 'मानक मोड' में सशर्त टिप्पणियों को अनदेखा किया जाता है - लेकिन यह ठीक होना चाहिए क्योंकि IE10 + 'मानक मोड' में एक पागल रेंडरिंग इंजन नहीं है!)

इस समारोह में ड्रॉप:

function isIE( version, comparison ){
    var $div = $('<div style="display:none;"/>');

    // Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
    $div.appendTo($('body'));
    $div.html('<!--[if '+(comparison||'')+' IE '+(version||'')+']><a>&nbsp;</a><![endif]-->');

    var ieTest = $div.find('a').length;
    $div.remove();
    return ieTest;
}

फिर इसे इस तरह उपयोग करें:

if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }

if(isIE(8)){ /* runs in IE8 */ }

if(isIE(9)){ /* runs in IE9 */ }

if(isIE(8,'lte')){ /* runs in IE8 or below */ }

if(isIE(6,'lte')){ /* if you need this, I pity you... */ }

मैं इस फ़ंक्शन के परिणामों को कैशिंग करने का सुझाव दूंगा ताकि आपको इसे दोहराना न पड़े। उदाहरण के लिए, आप (comparison||'')+' IE '+(version||'')किसी ऑब्जेक्ट में इस परीक्षण के परिणाम के लिए स्टोर करने और जांचने के लिए स्ट्रिंग के रूप में उपयोग कर सकते हैं ।


9

ध्यान दें:

1) $ .browser jQuery 1.9+ में गिरा दिया गया प्रतीत होता है (जैसा कि मंदीप जैन ने नोट किया है)। इसके बजाय .support का उपयोग करने की अनुशंसा की जाती है ।

2) $ .browser.version IE 7 में "7" वापस कर सकता है जब ब्राउज़र "संगतता" मोड में होता है।

3) IE 10 के रूप में, सशर्त टिप्पणियां अब काम नहीं करेंगी।

4) jQuery 2.0+ ड्रॉप होगा IE 6/7/8 के लिए समर्थन

5) document.documentMode केवल Internet Explorer 8+ ब्राउज़र में परिभाषित किया गया प्रतीत होता है। लौटाया गया मान आपको बताएगा कि "संगतता" मोड इंटरनेट एक्सप्लोरर क्या चल रहा है। हालांकि अभी भी एक अच्छा समाधान नहीं है।

मैंने कई .support () विकल्प आज़माए, लेकिन ऐसा प्रतीत होता है कि जब IE ब्राउज़र (9+) संगतता मोड में होता है, तो यह बस IE 7 की तरह व्यवहार करेगा ... :(

अब तक मैंने केवल इसे काम करने के लिए पाया है (तरह-ए):

(यदि डॉक्यूमेंटमोड परिभाषित नहीं है और HTMLSerialize और अपारदर्शिता समर्थित नहीं हैं, तो आप IE <8 ...

if(!document.documentMode && !$.support.htmlSerialize && !$.support.opacity) 
{
    // IE 6/7 code
}

5

यदि आप ब्राउज़र संस्करणों के साथ फिडेल करते हैं तो यह बहुत बार अच्छा नहीं होता है। आप इसे खुद से लागू नहीं करना चाहते हैं। लेकिन आप पॉल आयरिश और अन्य स्मार्ट लोगों द्वारा बनाए गए माडर्निज़्र कर सकते हैं । यह पता लगाएगा कि ब्राउज़र वास्तव में क्या कर सकता है और <html>तत्व में उपयुक्त कक्षाएं लगा सकता है । हालाँकि, मॉर्डनिज़्र के साथ , आप IE संस्करण का इस तरह परीक्षण कर सकते हैं:

$('html.lt-ie9').each() {
    // this will execute if browser is IE 8 or less
}

सिमिलरी, आप उपयोग कर सकते हैं .lt-ie8, और .lt-ie7


3

आपको jQuery.support भी देखना चाहिए । फ़ीचर डिटेक्शन आपकी कार्यक्षमता को कोड करने के लिए ब्राउज़र डिटेक्शन की तुलना में बहुत अधिक विश्वसनीय है (जब तक कि आप ब्राउज़र संस्करणों को लॉग करने की कोशिश नहीं कर रहे हैं)।


3
IE8 का पता लगाने के लिए आप jQuery.support का उपयोग कैसे करेंगे?
बिशपZ

यदि AJAX वह है जिसे आप ढूंढ रहे हैं तो आप jQuery.support.ajax का उपयोग कर सकते हैं जो ब्राउज़र के AJAX
जोनाथन लिन

इस उत्तर में मदद करनी चाहिए: stackoverflow.com/questions/1944169/…
helgatheviking

3

आप इस jquery का उपयोग करके आसानी से पता लगा सकते हैं कि ब्राउज़र का कौन सा प्रकार और संस्करण है

$(document).ready(function()
{
 if ( $.browser.msie ){
    if($.browser.version == '6.0')
    {   $('html').addClass('ie6');
    }
    else if($.browser.version == '7.0')
    {   $('html').addClass('ie7');
    }
    else if($.browser.version == '8.0')
    {   $('html').addClass('ie8');
    }
    else if($.browser.version == '9.0')
    {   $('html').addClass('ie9');
    }
 }
 else if ( $.browser.webkit )
 { $('html').addClass('webkit');
 }
 else if ( $.browser.mozilla )
 { $('html').addClass('mozilla');
 }
 else if ( $.browser.opera )
 { $('html').addClass('opera');
 }
});

1

यहाँ ब्राउज़र / ओएस का पता लगाने के लिए Jquery ब्राउज़र डिटेक्ट प्लगइन है।

आप प्लगइन को शामिल करने के बाद स्टाइल उद्देश्य के लिए इसका उपयोग कर सकते हैं।

$("html").addClass($.os.name);
$("body").addClass($.browser.className);
$("body").addClass($.browser.name);

0

ब्राउज़र नाम का पता लगाने के लिए आप $ .browser का उपयोग कर सकते हैं। संभावित मूल्य हैं:

  • वेबकिट (jQuery 1.4 के रूप में)
  • सफारी (पदावनत)
  • ओपेरा
  • MSIE
  • mozilla

या बूलियन ध्वज प्राप्त करें: यदि ब्राउज़र MSIE है तो $ .browser.msie सही होगा।

संस्करण संख्या के रूप में, यदि आप केवल प्रमुख रिलीज़ संख्या में रुचि रखते हैं - आप parseInt ($। browser.version, 10) का उपयोग कर सकते हैं। $ .browser.version स्ट्रिंग को स्वयं पार्स करने की कोई आवश्यकता नहीं है।

फिर भी, $ .browser पर निर्भर रहने के बजाय $।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.