Самое короткое решение IE в прошлом было вынесено из -за функции, которую IE не поддерживает вертикальные вкладки.
Кода -копия выглядит следующим образом:
var IE =!+"/v1";
Требуется всего лишь 7 байтов! Смотрите эту статью: «32 байта, EHR ... 9, EHR ... 7 !!! Чтобы узнать, есть ли ваш браузер IE», рассказывает историю о том, как иностранцы сократили суждение IE с 32 байтов до 7 байтов! Но этот рекорд был побит русский язык 8 января этого года. Теперь это занимает всего 6 байтов! Он использует разницу между IE и стандартными браузерами в массивах обработки. Для стандартных браузеров, если последний персонаж в массиве является запятой, двигатель JS автоматически удалит его.
Кода -копия выглядит следующим образом:
VAR IE =!-[1,];
Этот код был назван самым коротким в мире кодексом суждения IE до IE9. Хотя код короткий, он содержит много базовых знаний JavaScript. В этом примере, когда код будет выполнен, метод ToString () массива будет называться первым. Выполнить [1,]. ToString () в IE6, 7, 8 получит «1». Тогда выражение становится!-«1». Затем попробуйте преобразовать «1» в числовой тип, чтобы получить NAN, а затем возьмите отрицательный NAN, чтобы получить значение, все еще NAN. Наконец -то выполняет! Нан возвращает True. Следующее предназначено для рассмотрения знаний JavaScript, участвующих в коде, путем разложения этого утверждения:
1.
[1,] означает, что массив определяется с использованием буквального массива JavaScript. В IE6, 7, 8 есть два элемента массива, а значения в массиве - 1, не определен. В стандартном браузере неопределенный после первого элемента игнорируется, а массив содержит только один элемент 1.
2. Метод массива ToString ()
При вызове метода ToString () объекта массива метод toString () будет вызоваться на каждом элементе в массиве. Если значение элемента является нулевым или неопределенным, будет возвращена пустая строка, а значение каждого элемента будет записано в строку, разделенную запятыми ».
3. Оператор Oneary Minus
При использовании оператора Unary Minus, если номер операции является числовым типом, он напрямую отрицает операционный номер. В противном случае вы сначала попытаетесь преобразовать операционный номер в числовой тип. Процесс преобразования эквивалентен выполнению функции числа, а затем отрицает результат.
4. Логическое неисправность
Возвращает True, если операнд является NAN, NULL или неопределенным при выполнении логических неопераций.
JavaScript можно написать так:
Кода -копия выглядит следующим образом:
VAR IE =!-[1,];
оповещение (т.е.);
Если мы судим с точки зрения, не являющейся ИЕ, мы можем сэкономить один бит, потому что, когда мы совместимы, большую часть времени, т.е. и не стартовая строительство. var notie = -[1,];
Кода -копия выглядит следующим образом:
if (-[1,]) {
оповещение («Это не браузер IE!»);
}еще{
оповещение («Это браузер IE!»);
}
Из приведенного выше знания мы можем получить, что код var IE =!-[1,]; на самом деле эквивалентен варину =! (-число ([1,]. toString ())); Значение в IE6/7/8 верно.
Поскольку IE6/7/8 не будет игнорировать ошибку [1,]. ToString (), то есть то, что вы получаете, «1»; и -number ([1,]. ToString ()) является -number («1,») Результатом является NAN; Тогда! (-номер ([1,]. ToString ())) IS! (NAN) это правда. Предпосылка всего заключается в том, что IE6/7/8 имеет ошибку [1,]. ToString () => "1," в то время как другие браузеры (которые должны быть большинством из них ~~) [1,]. ToString () => "1".
Недавно я обнаружил, что друг использовал это, чтобы побудить пользователей обновить свой браузер
<script>!-[1,] && alert ('Вы используете IE6-8 версию браузера. Рекомендуется использовать Chrome, Firefox, IE9+ для просмотра с/n/n!'); </script>