2015-05-01 5 views
12

में केवल एक स्क्रिप्ट कैसे लोड करें मुझे केवल एक विशेष स्क्रिप्ट की आवश्यकता है जो इंटरनेट एक्सप्लोरर ब्राउज़र में ट्रिगर हो!आईई

मैं इस की कोशिश की है:

<!--[if IE]> 
<script></script> 
<![endif]--> 

दुर्भाग्य से यह वास्तव में लोड किया जा रहा से स्क्रिप्ट बंद हो जाता है।

संपादित करें: सभी को यह पूछने के लिए कि मुझे इसकी आवश्यकता क्यों है: आईई कुछ एनिमेशन का उपयोग करते समय स्क्रॉलिंग बेहद अजीब बनाता है। इसे संबोधित करने के लिए मुझे एक ऐसी स्क्रिप्ट लागू करने की आवश्यकता है जो आईई को चिकनी स्क्रॉलिंग प्रदान करे। मैं इसे अन्य ब्राउज़रों पर लागू नहीं करना चाहता क्योंकि उन्हें इसकी आवश्यकता नहीं है और इस स्क्रिप्ट हालांकि स्क्रॉलिंग चिकनी बनाने से यह थोड़ा अप्राकृतिक हो जाता है।

+3

सशर्त टिप्पणियों IE10 में काम नहीं करते और इसके बाद के संस्करण, यह मानते हुए आप IE10/IE11 चला रहे हैं यह जीता ' ट्रिगर नहीं किया जाएगा। – lifetimes

+0

यह सहायक हो सकता है: http: //stackoverflow.com/questions/5505155/how-not-to-load-a-script-in-ie –

+0

आप IE में केवल एक विशेष स्क्रिप्ट लोड करने का प्रयास क्यों कर रहे हैं? – Jaco

उत्तर

22

मैं उत्सुक क्यों आप विशेष रूप से IE ब्राउज़र को लक्ष्य करने की जरूरत है, लेकिन निम्नलिखित कोड काम करना चाहिए कि अगर वास्तव में आप क्या करने की जरूरत है:

<script type="text/javascript"> 
    if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent)) 
     document.write('<script src="somescript.js"><\/script>'); 
</script> 

रेगेक्स (MSIE \d) का पहला आधा इंटरनेट एक्सप्लोरर 10 और नीचे का पता लगाने के लिए है। दूसरा आधा IE11 (Trident.*rv:) का पता लगाने के लिए है।

यदि ब्राउज़र का उपयोगकर्ता एजेंट स्ट्रिंग उस पैटर्न से मेल खाता है, तो यह पृष्ठ पर somescript.js जोड़ देगा।

+0

ठीक है, ऐसा होता है कि आईई में चिकनी स्क्रॉलिंग ("टूल्स> इंटरनेट विकल्प> उन्नत>" चिकना स्क्रॉलिंग का उपयोग करें "नामक यह शानदार विशेषता है जो डिफ़ॉल्ट रूप से चुनी जाती है और वास्तव में किसी को हल करने की बजाय सभी प्रकार की समस्याओं को बनाने के लिए सीम करती है। विशेष मामला मेरे पास कई स्लाइडिंग-एनीमेशन हैं जो केवल आईई पर स्क्रॉलिंग को बेहद अजीब बनाते हैं जब तक कि आपके पास यह चिकनी स्क्रॉलिंग बंद न हो। इसलिए मुझे केवल आईई के लिए स्क्रॉलिंग स्क्रिप्ट जोड़नी होगी। –

+0

यह एक आकर्षण की तरह काम करता है। धन्यवाद बहुत कुछ! –

+0

हैलो, मेरे पास कुछ आवश्यकताएं हैं जिनमें मुझे सभी ब्राउज़र में कॉल करने के लिए कुछ जेएस फ़ाइल चाहिए, लेकिन आईई 10 और आईई 9 में नहीं। इस शर्त के लिए कौन सी स्थिति काम करेगी? –

0

फ़ीचर डिटेक्शन एक बेहतर तरीका है - मैं Modernizr को अपने समाधान को बढ़ाने के लिए अनुशंसा करता हूं जब डिवाइस/ब्राउज़र इसका समर्थन करने में सक्षम हों।

यह सीएसएस आधारित दृष्टिकोण कभी-कभी भी काम करता है, इसके आधार पर आपको इसकी आवश्यकता होती है।

var ua = window.navigator.userAgent; 
if (ua.indexOf("MSIE ") != -1|| !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.setAttribute('src', 'YOUR_JS_SCRIPT.js'); 
    script.setAttribute('type', 'text/javascript'); 
    script.setAttribute('async', 'false'); 
    head.appendChild(script); 
} 

अगर आप jQuery का उपयोग कर सकते हैं कम उपयोग कर सकते हैं:

<head>

<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]> <html class="lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]> <html class="lt-ie9"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class=""> <!--<![endif]--> 

reference article - http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

+0

कुछ टिप्पणियों का उल्लेख है - यह नए ब्राउज़र के कारण उपयोगी नहीं बढ़ रहा है क्योंकि –

0

आप IE का पता लगाने और dynamicaly अपनी स्क्रिप्ट सम्मिलित करने के लिए जावास्क्रिप्ट का उपयोग कर सकते में रखें इस कोड:

if (ua.indexOf("MSIE ") != -1 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
    $.getScript('YOUR_JS_SCRIPT.js'); 
} 

समाधान इस पोस्ट में पाया Check if user is using IE with jQuery

+0

यह आईई 11 का पता लगाने के लिए काम नहीं करेगा। – nderscore

+0

@nderscore क्यों? – jcubic

+0

आईई 11 में उपयोगकर्ता एजेंट स्ट्रिंग में एमएसआईई नहीं है। – nderscore

1

आप अपने आईई विशिष्ट JavaScript चलाने की इस स्क्रिप्ट को संशोधित कर सकते हैं:

var ua = window.navigator.userAgent; 
 
var msie = ua.indexOf("MSIE "); 
 

 
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number 
 
    alert('IE ' + parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)))); 
 
else alert('otherbrowser');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>