/*@cc_on и обнаружение IE6
При исследовании условных комментариев 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
@*/
Проблема в том, что я получаю сообщение об ошибке "ожидаемая постоянная" на !window.XMLHttpRequest
,
Очевидно, что Википедии нужна помощь, и мне нужно, чтобы это работало. Может кто-нибудь мне помочь?
4 ответа
Определенно не эксперт 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/
Я нашел решение. Код выглядит следующим образом.
<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>
Я пользуюсь этой хорошей линией годами:
var IE; //@cc_on IE = parseFloat((/MSIE[\s]*([\d\.]+)/).exec(navigator.appVersion)[1]);
Маленький и точный (проверено в IE 6-10).
Примечание для тех, кто использует ворчание. обязательно установите preserveComments: 'some', если вы используете uglify
Плагин, чтобы убедиться, что условные комментарии не удалены.
Может быть, немного опоздал на вечеринку, но я также столкнулся с этой проблемой, взорвался, и мое решение было следующим, надеюсь, это поможет 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;
}