2016-08-12 3 views
-1

мне нужно что-то вроде этого:если IE10 или IE11 отображать различные изображения

<img src="image.svg" /> 

<!--[if IE ]><img src="image.png" /><![endif]--> 

Поскольку условные комментарии не работают больше в IE10 и IE11 У меня возникли сложности с выполнением этого. Javascript, который доступен для таргетинга на новый интернет-исследователь, кажется сложным и ненадежным. Но, возможно, я ошибаюсь, и есть какое-то простое решение.

Спасибо за вашу помощь

+1

Обнаружение этой чисто клиентской стороны будет больше проблем, чем того стоит. – MackieeE

+0

вам лучше использовать стили и загрузить в другую таблицу стилей для IE. Используйте резервную копию png для неподдерживаемых браузеров или используйте что-то вроде modenizr, которое добавляет классы в тег 'html' – Martin

+0

Я не понимаю, почему этот вопрос заслуживает немедленного голосования. SVG отлично работает, за исключением Internet Explorer. Он неправильно отображает этот специфический SVG, и логично попытаться найти способ его замены с помощью PNG. – Goran

ответ

3

Я думаю, что это будет трудно обойтись без каких-либо скриптов. И ответ, данный @eisbehr, будет отлично работать. Но если вы не хотите использовать какие-либо другие плагины, но jQuery, вы можете проверить documentMode и добавить некоторую информацию в тело. Тогда пусть css решит, что показывать или нет.

ПРИМЕЧАНИЕ: оно не работает в Edge. Код написан специально для IE10 и IE11, поскольку это то, о чем попросил OP. Но его можно настроить для разных версий. Но тогда я бы пошел с ответом от @eisbehr.

$(function() { 
 
    if(document["documentMode"]) { // If Internet Explorer 10, 11 
 
     var cssClass = "ie" + document["documentMode"]; 
 
     $('body').addClass(cssClass); 
 
    } 
 
});
.ie-dependant { 
 
    display:none; 
 
} 
 

 
body.ie11 .ie-dependant.ie11 { 
 
    display: block; 
 
} 
 

 
body.ie10 .ie-dependant.ie10 { 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="ie-dependant ie10"> 
 
    This is ie 10. 
 
</div> 
 

 
<div class="ie-dependant ie11"> 
 
    This is ie 11. 
 
</div>

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

+0

спасибо, что отлично работает – Goran

3

Ther не сборки в или решения по умолчанию для этого. Вы должны создавать собственные или использовать другие инструменты. На стороне браузера вы можете использовать такие инструменты, как Modernizr, browser или jQuery.browser и выполнить проверку с помощью JS.

if(browser.msie && browser.version >= 10) { 
    // browser is IE10 or 11 
} 

Модернизатор еще сложнее и имеет много возможностей. Это может помочь вам:

if(!Modernizr.svg) { 
    var imgs = document.getElementsByTagName('img'); 
    var svgExtension = /.*\.svg$/ 
    var l = imgs.length; 

    for(var i = 0; i < l; i++) { 
     if(imgs[i].src.match(svgExtension)) { 
      imgs[i].src = imgs[i].src.slice(0, -3) + 'png'; 
     } 
    } 
} 

режим подробности об этом примере можно найти here.

+1

Я как раз собирался предложить Modernizr. :-) Похоже, что, наверное, самый удобный способ –

+0

Modernizr не используется для обнаружения браузера за использование, но возможностей браузера. http://stackoverflow.com/questions/13478303/correct-way-to-use-modernizr-to-detect-ie https://github.com/Modernizr/Modernizr/issues/203 – smoksnes

+1

Вот почему пример модернизатора использует ' ! Modernizr.svg' для проверки совместимости с svg и не выполняет проверку браузера. ;) @smoksnes – eisbehr

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