2013-08-23 22 views
0

Conditional comments have been deprecated since IE10, который нарушает некоторые устаревшие коды, используемые для определения того, является ли текущий веб-браузер IE или нет. См. https://gist.github.com/padolsey/527683обнаруживает Internet Explorer (работает с IE10 + тоже!)

Я ищу решение, которое работает для ВСЕХ версий Internet Explorer (не только IE9 и ниже).

Благодаря

+2

решение * *, что именно? – Pointy

+0

Ответы в этом сообщении, вероятно, помогут вам в правильном направлении: [Как настроить таргетинг только на Internet Explorer 10 для определенных ситуаций, таких как CSS или JavaScript-код для браузера Internet Explorer?] (Http://stackoverflow.com/questions/9900311/how-do-i-target-only-internet-explorer-10-для-определенных-ситуаций-like-internet-e) –

+0

Я бы сказал, что часто бывает более разумным и проще выполнять проверку функций, а не проверка браузера. Вы можете посмотреть, как использовать MODERNIZR ~ http://modernizr.com/ – Steve

ответ

-1

После комментария от "ecstaticpeon" на https://gist.github.com/padolsey/527683, я обнаружил, что это работает.

попробовать себя на http://jsfiddle.net/P5z4N/4/

var ie_version = (function() { 
    var undef, 
     v = 3, 
     div = document.createElement('div'), 
     all = div.getElementsByTagName('i'); 

    while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', 
     all[0] 
    ); 

    return v > 4 ? v : undef; 
}()); 
/*@cc_on 
if (typeof(ie_version) == 'undefined') { 
    ie_version = parseInt(@_jscript_version); 
} 
@*/ 

В приведенной ниже Javascript также, кажется, работает:

Попробуйте на http://jsfiddle.net/e8G3S/1/

// Returns the version of Internet Explorer or a -1 (indicating the use of another browser) 
function getInternetExplorerVersion(){ 
    var rv = -1; // Return value assumes failure. 
    if (navigator.appName == 'Microsoft Internet Explorer'){ 
    var ua = navigator.userAgent; 
    var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
    if (re.exec(ua) != null) 
     rv = parseFloat(RegExp.$1); 
    } 
    return rv; 
} 
function displayAlert(){ 
    var msg = "You're not using Internet Explorer."; 
    var ver = getInternetExplorerVersion(); 
    if (ver > -1){ 
    if (ver <= 8.0){ 
     msg = "You're using Internet Explorer 8 or below" ; 
    } 
    else if (ver >= 9.0 && ver < 10.0){ 
     msg = "You're using IE 9 or above"; 
    } 
    else{ 
     msg = "You're using IE 10 or above"; 
    } 
    } 
    alert(msg); 
+0

Эти стратегии потерпят неудачу в IE11 и будущих версиях. – EricLaw

+0

@ EricLaw: не могли бы вы объяснить, почему? –

+0

Поскольку команда IE намеренно нарушала эти методы, поскольку они являются общим источником проблем взаимодействия. В частности, AppName IE11 не является «Microsoft Internet Explorer», а строка user-agent по умолчанию больше не содержит «MSIE». – EricLaw

Смежные вопросы