/ * @ cc_on и обнаружение IE6 - PullRequest
       23

/ * @ cc_on и обнаружение IE6

5 голосов
/ 04 декабря 2009

При исследовании условных комментариев JavaScript для IE я наткнулся на @cc_on. Это похоже на работу. Однако запись в википедии для условных комментариев предоставляет следующий код для более надежных обнаружений IE, особенно IE6:

/*@cc_on
    @if (@_jscript_version > 5.7)
    document.write("You are using IE8+");

    @elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
    document.write("You are using IE7");

    @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
    document.write("You are using IE6");

    @elif (@_jscript_version == 5.5)
    document.write("You are using IE5.5");

    @else
    document.write("You are using IE5 or older");

@end

@*/

Проблема в том, что я получаю "ожидаемую постоянную" ошибку JavaScript на !window.XMLHttpRequest.

Очевидно, что Википедии нужна помощь, и мне нужно, чтобы это работало. Кто-нибудь может мне помочь?

Ответы [ 4 ]

4 голосов
/ 04 декабря 2009

Определенно не эксперт по JS, но некоторые поиски нашли это для изоляции IE6 от IE7 с помощью jscript_version == 5.7:

/*@cc_on
if (@_jscript_version==5.6 ||
   (@_jscript_version==5.7 &&
      navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1)) {
  //ie6 code
}
@*/

Может быть, это укажет вам правильное направление.

Источник: http://sharovatov.wordpress.com/2009/06/03/efficient-ie-version-targeting/

3 голосов
/ 28 января 2010

Я нашел решение. Код выглядит следующим образом.

<script type="text/javascript" charset="utf-8">
/*@cc_on
if (@_jscript_version > 5.7)
 document.write("You are using IE8");
else if (@_jscript_version == 5.7 && window.XMLHttpRequest)
 document.write("You are using IE7");
else if (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
 document.write("You are using IE6");
else if (@_jscript_version == 5.5)
 document.write("You are using IE5.5");
else
 document.write("You are using IE5 or older");
@*/
</script>
2 голосов
/ 02 апреля 2013

Я пользуюсь этим хорошим однострочником годами:

var IE; //@cc_on IE = parseFloat((/MSIE[\s]*([\d\.]+)/).exec(navigator.appVersion)[1]);

Маленький и точный (проверено в IE 6-10).

Примечание для тех, кто использует ворчание. Обязательно установите preserveComments: 'some', если вы используете плагин uglify, чтобы убедиться, что условные комментарии не удалены.

0 голосов
/ 13 декабря 2013

возможно, немного опоздал на вечеринку, но я тоже сталкивался с этой проблемой, взорвался, и мое решение было следующим, надеюсь, это поможет https://github.com/davesmiths/isIE

var isIE = false;
/*@cc_on isIE = @_jscript_version;@*/
if (isIE !== false) {
   if (isIE == 5.8)
       isIE = 8;
   else if (isIE == 5.7 && window.XMLHttpRequest)
       isIE = 7;
   else if (isIE == 5.7 || isIE == 5.6)
       isIE = 6;
   else if (isIE <= 5.5)
       isIE = 5;
} 
...