2014-01-21 2 views
1

Я хочу нацелить все кроме IE, версии 8 и ниже. Обычно я бы использовал условный комментарий:Целевая всего, кроме Internet Explorer 8-

<!--[if !IE]><!--><p>Do non IE things</p><!--[if !IE]><!--> 

Однако это предназначено для версий 9 и ниже. Есть ли способ использовать только версии 8 и ниже, возможно, с помощью JavaScript?

Благодаря

+1

http://www.quirksmode.org/css/condcom.html – elclanrs

+0

@elclanrs Единственная проблема с этой статьей он получает * не-IE * часть неправильно (потребности '' после того, как условия) – Phil

ответ

4

Это должно быть так же просто, как

<!--[if IE gt 8]><!--> content here <!--<![endif]--> 
  • IE 8 и ниже будет соблюдать условия и не показывают содержание
  • IE 9 будет проходить условие (потому что это не IE 8) и показать контент
  • Все остальное (включая IE 10 и 11) будет игнорировать условное выражение как просто комментарий и показать содержимое

JSFiddle demo

(редактирование: только что заметил, вы сказали версии 8 и ниже. Обновленный ответ, чтобы отразить это)

0

Это не будет работать в IE11, оно игнорирует условные обозначения. Вам лучше выполнять функции обнаружения, а не обнюхивать браузер, который вы делаете. Вот сценарий, который я использую в своем SPA, чтобы перенаправить пользователя на основной сайт, когда он использует устаревший браузер.

<script> 

    var ef = "?_escaped_fragment_="; 

    if (!('querySelector' in document) 
     || !('localStorage' in window) 
     || !('addEventListener' in window) 
     || !('matchMedia' in window)) { 

     if (window.location.href.indexOf("#!") > 0) { 
      window.location.href = window.location.href.replace("#!", ef); 
     } else { 
      if (window.location.href.indexOf(ef) < 0) { 
       window.location.href = window.location.href + ef; 
      } 
     } 

    } else { 

     if (window.location.href.indexOf(ef) >= 0) { 
      window.location.href = window.location.href.replace(ef, "#!"); 
     } 
    } 

</script>