Как не загрузить скрипт в IE?

можно загрузить скрипт только в IE с помощью условных комментариев

<!--[if lte IE 7]>
    <script type="text/javascript" src="somescript.js"></script>
<![endif]-->

но что, если я не хотите загрузить его в IE lte 7 (но все равно он нужен во всех других браузерах)?

какие простые решения?

P. S. У меня есть проблема с syntaxhighlighter - слишком много кода замедляет ИЕ7 и так как у меня мало времени, я решил просто отключить его в IE7 сейчас.

7 ответов


этот пост говорит, что вы можете использовать ! (Не) оператор like [if !IE]


<![if !IE]>
    <script type="text/javascript" src="somescript.js"></script>
<![endif]>

<!--[if gte IE 7]>
    <script type="text/javascript" src="somescript.js"></script>
<![endif]-->
<!--[if !IE]>
    <script type="text/javascript" src="somescript.js"></script>
<![endif]-->

этот синтаксис работает хорошо (скрипт не будет прокомментирован в firefox, chrome и так далее):

<!--[if !IE]><!-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<!--<![endif]-->

вы можете попробовать обнаружить серверную часть браузера,а затем повторить соответствующий скрипт.

ниже приведен пример упрощенного обнаружения браузера в PHP:

http://www.php-scripts.com/20050912/12/


я использовал примеры, показанные здесь и в других местах, и очень неприятно видеть, сколько мест этот пример кода испорчен. Оказывается, ответ прост, IE имеет специальные "условные", такие как [if IE], но другим браузерам нужны комментарии для работы с "условными".

например, поскольку JQuery 2 не работает с IE8, вы можете сделать что-то вроде этого

<!--[if IE ]>  (following is only visible to IE)
    <script src="./js/lib/jquery-1.6.1.min.js"></script>
<![endif]-->
<!--[if !IE]>-->  (extra comment - only visible to non-IE)
    <script src="./js/lib/jquery-2.1.1.min.js"></script>
    <script src="./js/lib/jquery.mobile-1.4.5.min.js"></script>
<!--<![endif]-->

Я проверил вышеуказанные работы в Firefox, Chrome, IE8, Dolphin mobile и Chrome мобильный. Также можно указать версию. Например, меньше, чем IE 9 будет:<!--[if lt IE 9 ]>

для детального объяснения, проверите вне http://www.sitepoint.com/web-foundations/internet-explorer-conditional-comments/


поскольку условные операторы не работают в IE(10,11), и только IE(11) поддерживается Microsoft,и если кто-то все еще смотрит на запуск конкретного JavaScript IE,то этот код все еще работает в 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>');}
    else 
        {document.write('<script src="../nolng/js/ex1.js"><\/script>'); // for Chrome,Firefox,Edge}
</script>