Какая бы версия браузера IE ни была, она всегда несколько несовместима с веб-стандартами. Для разработчиков кода это, естественно, неприятно. Чтобы рассмотреть вопрос совместимости IE, независимо от того, пишете ли вы CSS или JS, к IE часто обращаются особым образом, что требует некоторого суждения. В этой статье не рассматривается, как различать стили IE, только JS определяет браузер IE.
Самый короткий в мире метод Javascript для определения браузера IE родом из России! Он был протестирован на различных версиях IE и других популярных в настоящее время браузерах. Хотя Microsoft знала об ошибках в IE, она так и не исправила их.
<тип сценария='текст/javascript'> var ie = !-[1,]; предупреждение(т.е.); </скрипт> |
Результат выполнения приведенного выше кода: возвращает true в IE и возвращает false в других стандартных браузерах. !-[1,], всего 6 байт!
Однако, если решение будет отменено, если стандартный браузер вернет true, а IE — false, то его можно сократить на один байт.
<тип сценария='текст/javascript'> notIe = -[1,]; если(-[1,]){ // Стандартный код браузера }еще{ // Код только для IE } </скрипт> |
Прочитав это, вам интересно, как они работают? Пожалуйста, продолжайте читать ниже.
Эта ошибка возникает из-за того, что IE добавляет пустой элемент массива к общему количеству элементов массива.
[1,]. Стандартные браузеры длины вернут 1 (на основе стандарта ECMAscript запятая "," в конце массива будет игнорироваться, это сделано для облегчения отображения в столбце и автоматической генерации и т. д.), но IE вернется 2. Когда вы распечатаете этот массив, IE вернет «1», то есть два элемента, тогда как другие стандартные браузеры вернут «1».
Это легко проверить, выполнив следующий код в IE и FF:
<тип сценария='текст/javascript'> оповещение([,]==','); //Это 8 символов для определения IE </скрипт> |
[1,] Фактически, операция браузера — это toString() для преобразования строки в строку, а -[1,] — для преобразования строки в число. IE вернет NaN, но, к сожалению, NaN не является числом, поскольку «1» после [1,] преобразуется в строку и содержит запятую. Другие стандартные браузеры вернут -1, что является ненулевым числом.
Вы знаете, преобразование NaN в логическое значение вернет false, поэтому -[1,] вернет false в IE. Любое число, отличное от 0, преобразованное в логический тип (например, -1), вернет true в стандартных браузерах. Таким образом, мы получаем результат оценки: !-[1,] возвращает true в IE, но возвращает false в других стандартных браузерах. Это также позволяет различать и оценивать браузеры IE.
Конечно, как упоминалось ранее, Microsoft на самом деле знала об этой ошибке уже давно, но так и не исправила ее, поэтому в будущем > IE8 браузер IE не уверен, будет ли он все еще работать, но в основном после стольких поколений IE не ремонтировался, и маловероятно, что IE будет ремонтироваться в будущем.
Ниже приведены некоторые другие коды для различения и оценки браузеров IE. Вы также можете обратиться к следующему:
<тип сценария='текст/javascript'> // Вариант от Дина Эдвардса: var ie = /*@cc_on!@*/false; // Используйте закомментированную строку: var ie//@cc_on=1; // Вариант (более короткая переменная): var ie = 'v'=='v'; // Вариант Гарета Хейса (бывшего рекордсмена): var ie = !+"v1"; </скрипт> |