簡體   English   中英

如何僅在 IE 中加載腳本

[英]How to load a script only in IE

我只需要在 Internet Explorer 瀏覽器中觸發特定腳本!

我試過這個:

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

不幸的是,這實際上阻止了腳本的加載。

編輯:對於問我為什么需要這個的每個人:IE 在使用某些動畫時會使滾動變得非常跳躍。 為了解決這個問題,我需要實現一個為 IE 提供平滑滾動的腳本。 我不想將它應用到其他瀏覽器,因為它們不需要它,而且這個腳本雖然使滾動更平滑也讓它有點不自然。

我很好奇為什么你特別需要針對 IE 瀏覽器,但如果這確實是你需要做的,下面的代碼應該可以工作:

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

Regex ( MSIE \d ) 的前半部分用於檢測 Internet Explorer 10 及更低版本。 后半部分用於檢測 IE11 ( Trident.*rv: )。

如果瀏覽器的用戶代理字符串與該模式匹配,它會將somescript.js附加到頁面。

除了IE,所有瀏覽器都支持currentScript

<script>
    // self-invoked wrapper for scoping the `document` variable
    !function( d ) {
        if( !d.currentScript ){
            var s = d.createElement('script')
            s.src = 'ie.js'
            d.head.appendChild(s)
        }
    }(document)
</script>

以上將有條件地為 IE 瀏覽器附加一個腳本文件。

如果有人仍在查看運行 IE 特定的 Javascript,那么此代碼仍然可以在 IE(11) 和非 IE 瀏覽器(Chrome、Firefox、Edge)中進行測試

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

您可以修改此腳本以運行特定於 IE 的 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>

您可以使用 javascript 來檢測 IE 並動態插入您的腳本:

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,你可以使用更短的代碼:

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

在這篇文章中找到的解決方案檢查用戶是否使用 IE 和 jQuery

特征檢測是一種更好的方法——我建議研究Modernizr ,以便在設備/瀏覽器能夠支持它時逐步增強您的解決方案。

這種基於 CSS 的方法有時也有效,具體取決於您的需要。

把它放在<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]-->

參考文章 - http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM