Ответ 1
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->
Примечание. Эти условные комментарии больше не поддерживаются с IE 10 и далее.
У меня возникли проблемы с получением
<!--[if !IE]>
работать. Мне интересно, если это потому, что у меня это в документе
<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]> <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]> <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="">
<!--<![endif]-->
Когда я добавляю
<!--[if !IE]><!-->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<!--<![endif]-->
в мой заголовок по какой-то причине он не работает. Однако, если я добавлю
<!--[if !IE]><!-->
<style>
All my css in here
</style>
<!--<![endif]-->
на фактическую страницу html (в заголовке) она работает. Какие-либо предложения? Приветствия
Обновить мой вопрос
Хорошо, когда я удалил
<!-->
Я только проверял в IE, который работал, но теперь в FF no-ie.css тоже был применен к FF. Поэтому я добавил обратно в <!-->
и удалил/(и добавил это в основной шаблон, чтобы cms не добавили его обратно), и все работает в FF, но теперь таблица стилей применяется к IE!
Поэтому я попробовал
<!--[if IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<![endif]-->
и
<!--[if !IE]> -->
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<!-- <![endif]-->
И это не сработало. В основном я пытаюсь заставить эту страницу работать http://css-tricks.com/examples/ResponsiveTables/responsive.php, но переместите css в таблицу стилей. Конечно, это должно быть просто. Что мне не хватает? Я бы предпочел не использовать JQuery, если мне это не нужно. Приветствия
<!--[if !IE]><!--><script src="zepto.min.js"></script><!--<![endif]-->
<!--[if IE]><script src="jquery-1.7.2.min.js"></script><![endif]-->
Примечание. Эти условные комментарии больше не поддерживаются с IE 10 и далее.
Браузеры, отличные от IE, обрабатывают условные выражения как комментарии, поскольку они заключены в теги комментариев.
<!--[if IE]>
Non-IE browsers ignore this
<![endif]-->
Однако, когда вы нацеливаете браузер, который не является IE, вам нужно использовать 2 комментария, один до и один после кода. IE будет игнорировать код между ними, тогда как другие браузеры будут рассматривать его как обычный код. Поэтому синтаксис для таргетинга на не-IE-браузеры:
<!--[if !IE]-->
IE ignores this
<!--[endif]-->
Примечание. Эти условные комментарии больше не поддерживаются с IE 10 и далее.
Обновление, если кто-то еще достигает этой страницы, задаваясь вопросом, почему таргетинг не работает. IE 10 и больше не поддерживают условные комментарии. С официального сайта MS:
Поддержка условных комментариев удалена в Internet Explorer 10 стандартов и причудливых режимов для улучшения совместимости и соответствие HTML5.
Подробнее см. здесь http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
Если вам отчаянно нужно настроить таргетинг, то вы можете использовать этот код jquery, чтобы добавить класс ie, а затем использовать класс .ie в вашем css для целевых, т.е. браузеров.
if ($.browser.msie) {
$("html").addClass("ie");
}
Обновление: $.browser недоступен после jQuery 1.9. Если вы обновляетесь до jQuery выше 1,9 или уже используете его, вы можете включить jQuery migration script после jQuery, чтобы он добавил недостающие части: jQuery Перенос плагина
В качестве альтернативы, пожалуйста, просмотрите эту тему для возможных обходных путей: ошибка browser.msie после обновления до jQuery 1.9.1
Я использую это, и он работает:
<!--[if !IE]><!--> if it is not IE <!--<![endif]-->
Синтаксис, рекомендованный Microsoft для обнаруженных ниже уровней условных комментариев, таков:
<![if !IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css" />
<![endif]>
Эти arent комментарии, но они работают правильно.
Вам нужно разместить пробел для <!-- [if !IE] -->
. Мой полный блок css выглядит следующим образом, так как IE8 ужасен со средствами массовой информации
<!-- IE 8 or below -->
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="/Resources/css/master1300.css" />
<![endif]-->
<!-- IE 9 or above -->
<!--[if gte IE 9]>
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
href="/Resources/css/master480.css" />
<![endif]-->
<!-- Not IE -->
<!-- [if !IE] -->
<link rel="stylesheet" type="text/css" media="(max-width: 100000px) and (min-width:481px)"
href="/Resources/css/master1300.css" />
<link rel="stylesheet" type="text/css" media="(max-width: 480px)"
href="/Resources/css/master480.css" />
<!-- [endif] -->
Для таргетинга на пользователей IE:
<!--[if IE]>
Place Content here for Users of Internet Explorer.
<![endif]-->
Для таргетинга на все остальные:
<![if !IE]>
Place Content here for Users of all other Browsers.
<![endif]>
Условные комментарии могут быть обнаружены только Internet Explorer, все остальные браузеры передают его как обычно Комментарии.
Чтобы настроить IE 6,7 и т.д., вы должны использовать "Великое, чем равно" или "Меньше, чем (равно)" в заявлении If. Вот так.
Больше или равно:
<!--[if gte IE 7]>
Place Content here for Users of Internet Explorer 7 or above.
<![endif]-->
Мало, чем:
<!--[if lt IE 6]>
Place Content here for Users of Internet Explorer 5 or lower.
<![endif]-->
Прежде всего, правильный синтаксис:
<!--[if IE 6]>
<link type="text/css" rel="stylesheet" href="/stylesheets/ie6.css" />
<![endif]-->
Попробуйте следующее сообщение: http://www.quirksmode.org/css/condcom.html а также http://css-tricks.com/how-to-create-an-ie-only-stylesheet/
Еще одна вещь, которую вы можете сделать:
Проверьте браузер с помощью jQuery:
if($.browser.msie){ // do something... }
в этом случае вы можете изменить правила CSS для некоторых элементов или добавить новая ссылка ссылки css:
читайте это: http://rickardnilsson.net/post/2008/08/02/Applying-stylesheets-dynamically-with-jQuery.aspx
Для браузера IE:
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<![endif]-->
Для всех браузеров, отличных от IE:
<![if !IE]>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<![endif]>
Для всех IE больше 8 ИЛИ всех не-IE-браузеров:
<!--[if (gt IE 8)|!(IE)]><!--><script src="/_JS/library/jquery-2.1.1.min.js"></script><!--<![endif]-->
Условный комментарий - это комментарий, начинающийся с <!--[if IE]>
, который не может быть прочитан ни одним браузером, кроме IE.
с 2011 года Условный комментарий не поддерживается, начиная с IE 10, как было объявлено Microsoft в то время https://msdn.microsoft.com/en-us/library/hh801214(v=vs.85).aspx
Единственная опция использования комментариев с комментариями - это запросить IE для запуска вашего сайта как IE 9, который поддерживает условные комментарии.
вы можете написать свои собственные файлы css и/или js, т.е. только, и другие браузеры не будут загружать или выполнять его.
этот фрагмент кода показывает, как заставить IE 10 или 11 запускать ie-only.css и ie-only.js, который содержит пользовательские коды для решения проблем совместимости IE.
<html>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
<!--[if IE]>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode">
<link rel="stylesheet" type="text/css" href='/css/ie-only.css' />
<script src="/js/ie-only.js"></script>
<![endif]-->
</html>
Это работает для меня во всех браузерах, больших, чем версия 6 (IE7, 8, 9, 10 и т.д., Chrome 3 до того, что она есть сейчас, и FF ver 3 до того, что она сейчас):
//test if running in IE or not
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
}
Если вы работаете с IE 10 или выше, как указано в http://tanalin.com/en/articles/ie-version-js/, условные комментарии больше не поддерживаются. Вы можете обратиться к https://gist.github.com/jasongaylord/5733469 в качестве альтернативного метода, который также проверяется версией Trident из navigator.userAgent. Это также проверяется, если браузер работает в режиме совместимости.
Я использую этот javascript для обнаружения браузера IE
if (
navigator.appVersion.toUpperCase().indexOf("MSIE") != -1 ||
navigator.appVersion.toUpperCase().indexOf("TRIDENT") != -1 ||
navigator.appVersion.toUpperCase().indexOf("EDGE") != -1
)
{
$("#ie-warning").css("display", "block");
}
Спасибо Fernando68, я использовал это:
function isIE () {
var myNav = navigator.userAgent.toLowerCase();
return (myNav.indexOf('msie') != -1 || myNav.indexOf('trident') != -1) ? true : false;
}
if(isIE()){
$.getScript('js/script.min.js', function() {
alert('Load was performed.');
});
}
Я получаю этот код в моем браузере:
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
Примечание для этого кода: HTML5 Shiv и Respond.js Поддержка IE8 элементов HTML5 и медиа-запросов