Как настроить таргетинг только на Internet Explorer 10 для определенных ситуаций, таких как CSS для Internet Explorer или код JavaScript для Internet Explorer?
Я пробовал это, но это не работает:
<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]-->
<!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Internet Explorer 10 игнорирует условные комментарии и использует <html lang="en" class="no-js">
вместо <html class="no-js ie10" lang="en">
.
@cc_on
заявление . Таким образом, для определения того , IE10 поддерживает или нет, вы можете использовать следующий код:<!--[if !IE]><!--><script>if(/*@cc_on!@*/false){document.documentElement.className+=' ie10';}</script><!--<![endif]-->
. (Я разместил это в качестве комментария, поскольку IE все еще находится в разработке, поэтому неизвестно, будет ли финальная версия также поддерживать эту функцию)<script>if(Function('/*@cc_on return document.documentMode===10@*/')()){document.documentElement.className+=' ie10';}</script>
Улучшения: не требует условных комментариев; работает, даже если сжатие / обработка комментариев убраны; класс не добавлен для ie11; будет работать с ie11, работающим в режиме совместимости с ie10; не нуждается в отдельном теге скрипта (может быть просто добавлен в другой javascript в голове).if(document.documentMode) document.documentElement.className+=' ie'+document.documentMode+'mode';
- которое решает 90% проблем (иногда режимы совместимости выходят из строя, и в этом случае вам необходим еще один уровень исправления).Ответы:
Возможно, вы можете попробовать некоторые jQuery, как это:
Чтобы использовать этот метод, вы должны включить библиотеку jQuery Migrate, поскольку эта функция была удалена из основной библиотеки jQuery.
Получилось неплохо для меня. Но, конечно, нет замены для условных комментариев!
источник
== '10.0'
его для работыjQuery.browser
больше не доступно в текущей версии jQuery (1.9) без плагина. blog.jquery.com/2013/01/15/…if (jQuery.browser.msie && jQuery.browser.version < 10) { // do what you will here }
обратите внимание на verion <10 для обнаружения более старых версий IE. IE10 и выше отлично работает со всеми моими CSS3, HTML5, jquery и т. Д.Я бы не стал использовать JavaScript
navigator.userAgent
или $ .browser (который используетnavigator.userAgent
), поскольку он может быть подделан.Чтобы настроить таргетинг на Internet Explorer 9, 10 и 11 (Примечание: также последний Chrome):
Для таргетинга на Internet Explorer 10:
Чтобы настроить таргетинг на Edge Browser:
Источники:
источник
navigator.userAgent
»? Условная компиляция - это встроенная функция среды выполнения JScript, которая не может быть подделана с помощью строки агента пользователя.Я нашел решение на этом сайте, где у кого-то был ценный комментарий :
Решение:
Это
источник
if (/*@cc_on!@*/false && document.documentMode === 10) {}
который обходит все предупреждения в программах linting.Internet Explorer 10 больше не пытается читать условные комментарии. Это означает, что он будет обрабатывать условные комментарии так же, как и любой другой браузер: как обычные комментарии HTML, которые должны полностью игнорироваться. Рассматривая разметку, приведенную в вопросе в качестве примера, все браузеры, включая IE10, будут полностью игнорировать части комментариев, выделенные серым цветом. Стандарт HTML5 не упоминает синтаксис условных комментариев, и именно поэтому они решили прекратить поддерживать его в IE10.
Однако обратите внимание, что условная компиляция в JScript по-прежнему поддерживается, как показано в комментариях, а также в более поздних ответах. Это не уйдет в финальной версии, в отличие от
jQuery.browser
. И, конечно, само собой разумеется, что сниффинг пользовательского агента остается таким же хрупким, как и всегда, и никогда не должен использоваться ни при каких обстоятельствах.Если вам действительно нужно настроить таргетинг на IE10, либо используйте условную компиляцию, которая, возможно, все еще увидит поддержку в ближайшем будущем, либо - если вы можете помочь - используйте библиотеку обнаружения функций, такую как Modernizr, вместо (или в сочетании с) обнаружения в браузере. Если ваш сценарий использования не требует noscript или размещения IE10 на стороне сервера, прослушивание пользовательского агента будет скорее головной болью, чем жизнеспособным вариантом.
Звучит довольно громоздко, но помните, что как современный браузер, который в высшей степени соответствует современным веб-стандартам 1 , при условии, что вы написали совместимый код, который в высшей степени соответствует стандартам, вам не нужно откладывать специальный код для IE10, если в этом нет крайней необходимости, то есть он должен напоминать другие браузеры с точки зрения поведения и рендеринга. 2 И это звучит неправдоподобно, учитывая историю IE, но сколько раз вы ожидали, что Firefox или Chrome будут вести себя одинаково, только чтобы встретить смятение?
box-sizing
префиксов в течение многих летесли ты делаете есть законные основания предназначаться определенные браузеры, все средства нюхать их с другими инструментами , предоставленных вам. Я просто говорю, что вам будет гораздо сложнее найти такую причину сегодня, чем она была раньше, и на самом деле это просто не то, на что вы можете положиться.
1 Не только IE10, но и IE9, и даже IE8, который обрабатывает большую часть зрелого стандарта CSS2.1 гораздо лучше, чем Chrome, просто потому, что IE8 был так сосредоточен на соблюдении стандартов (в то время CSS2.1 уже был довольно стабилен с незначительными отличиями) от сегодняшней рекомендации) в то время как Chrome кажется чуть более чем полированной технологической демонстрацией передовых псевдостандартов.
2 И я могу быть предвзятым, когда говорю это, но это точно так же, как и черт. Если ваш код работает в других браузерах, но не в IE, вероятность того, что это проблема с вашим собственным кодом, а не с IE10, намного лучше, чем, скажем, 3 года назад, с предыдущими версиями IE. Опять же, я могу быть предвзятым, но давайте будем честными: не так ли? Просто посмотрите на ваши комментарии.
источник
<!--[if !IE]><!-->stuff you don't want IE9 and below to see<!--<![endif]-->
Хорошее место для начала - документация по поддержке стандартов IE .
Вот как настроить таргетинг IE10 на JavaScript:
Вот как настроить таргетинг IE10 в CSS:
В случае, если IE11 необходимо отфильтровать или сбросить с помощью CSS, см. Другой вопрос: Как написать CSS-хак для IE 11?
источник
Оба решения, размещенные здесь (с небольшими изменениями) работают:
или
Вы включаете любую из приведенных выше строк внутри тега head своей html-страницы перед ссылкой css. И затем в файле CSS вы указываете свои стили, имеющие класс ie10 в качестве родителя:
И вуаля! - другие браузеры остаются неизменными. И вам не нужен JQuery. Пример того, как я это реализовал, вы можете увидеть здесь: http://kardash.net .
источник
Я написал небольшой ванильный плагин JavaScript под названием Layout Engine , который позволяет вам легко обнаруживать IE 10 (и любой другой браузер) простым способом, который невозможно подделать, в отличие от прослушивания пользовательского агента.
Он добавляет имя механизма рендеринга в виде класса в тег html и возвращает объект JavaScript, содержащий поставщика и версию (при необходимости).
Прочтите мой пост в блоге: http://mattstow.com/layout-engine.html и получите код на GitHub: https://github.com/stowball/Layout-Engine.
источник
Я использую этот скрипт - он устарел, но эффективен для нацеливания на отдельную таблицу стилей Internet Explorer 10 или файл JavaScript, который включается только в том случае, если браузер Internet Explorer 10, так же, как при использовании условных комментариев. Никакой jQuery или другой плагин не требуется.
источник
Вы можете использовать PHP, чтобы добавить таблицу стилей для IE 10
Подобно:
источник
Если вы должны сделать это, вы можете проверить строку агента пользователя в JavaScript:
Как уже упоминали другие люди, я бы всегда рекомендовал вместо этого обнаруживать функции.
источник
String.match()
вернет массив для совпадения или нуля, если это не так.!(String.match())
возвращает значение false для совпадения или true для отсутствия совпадения.!(!(String.match()))
возвращает значение true для совпадения или false для отсутствия совпадения.!(!(something))
или просто!!something
преобразовывает что-либо в логическое значение true / false. stackoverflow.com/questions/784929/…boolean
значениям, напримерvar name = 'me', hasName = !!name;
.Если вы хотите использовать IE 10 с Vanilla JavaScript, вы можете попробовать определить свойства CSS:
Свойства CSS
Вместо этого
msTouchAction
вы также можете использовать одно из этих свойств CSS, поскольку в настоящее время они доступны только в IE 10. Но это может измениться в будущем.Тестовая страница
Я собрал тестовую страницу со всеми свойствами на CodePen.
источник
clipBoardData - это функция, которая доступна только в IE, поэтому, если вы хотите настроить таргетинг на все версии IE, вы можете использовать
источник
CSS для IE10 + и IE9
источник
Вы можете использовать функцию обнаружения, чтобы увидеть, является ли браузер IE10 или выше, например, так:
Верно только если> IE9
источник
Conditionizr (см. Документацию) добавит CSS-классы браузера в ваш HTML-элемент, включая ie10.
источник
С помощью JavaScript:
Работа для всех IE.
Так что меняйте
/Trident/g
,/Trident/x.0/g
гдеx = 4, 5, 6
или7
(или, может быть,8
на будущее).источник
Я просто хотел добавить свою версию обнаружения IE. Он основан на фрагменте, найденном по адресу http://james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/, и расширен также для поддержки ie10 и ie11. Он обнаруживает IE 5 до 11.
Все, что вам нужно сделать, это добавить его куда-нибудь, и тогда вы всегда можете проверить с простым условием. Глобальная переменная
isIE
будет неопределенной, если это не IE, иначе это будет номер версии. Таким образом, вы можете легко добавлять такие вещи, какif (isIE && isIE < 10)
или так.источник
Для меня следующий код работает нормально, все условные комментарии работают во всех версиях IE:
Я на Windows 8.1, не уверен, связано ли это с обновлением ie11 ...
источник
(gt IE 11)
Бит совершенно ненужное. Вы можете просто сделать это<!--[if !(IE)]<!-->
вместо этого.Вот как я делаю пользовательский CSS для Internet Explorer:
В моем файле JavaScript:
И затем в моем файле CSS вы определяете каждый отдельный стиль:
источник
Проверьте http://suhasrathod.wordpress.com/2013/04/29/ie10-css-hacks/
источник
используйте Babel или машинопись для преобразования этого кода JS
источник
Этот ответ дал мне 90% пути туда. Я нашел остальную часть моего ответа на сайте Microsoft здесь .
Код ниже - это то, что я использую для нацеливания на всех, т.е. добавив класс .ie в
<html>
Использование JQuery (который осуждается .browser в пользу агентов пользователей в 1.9+ см http://api.jquery.com/jQuery.browser/ ) , чтобы добавить класс .ie:
источник
Если вы не против таргетинга браузеров IE10 и выше и браузеров не IE, вы можете использовать этот условный комментарий:
Получено из http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither
источник
Если вам действительно нужно, вы можете заставить условные комментарии работать, добавив следующую строку
<head>
:Источник
источник
современное решение для css
источник