На прошлой неделе Microsoft официально запустила первый предварительный просмотр Internet Explorer 11 с Windows 8.1. Таким образом, пришло время опираться на все слухи об этой спорной просочившейся версии веб -браузера. Теперь мы знаем несколько важных подробностей о Internet Explorer 11, включая поддержку WebGL, Prefetch (Примечание переводчика: PREREAD, такая как загрузка файлов и т. Д., И я не знаю, правильным ли перевод), предварительно предварительно представление), Flexbox, наблюдатели мутаций и другие веб -стандарты. Возможно, более интересно в IE11, это IE IE.
Microsoft впервые задолго задолго сняла некоторые функции из браузера Internet Explorer. Строка пользователя-агента также изменилась. Похоже, что Microsoft отказалась от собственного пути, так что существующие филиалы кода, определяющие IE, вернут False в браузере Internet Explorer 11, будь то в JavaScript или на сервере.
Изменения в пользовательском агенте
По сравнению с предыдущими версиями, строка пользователя-агента Internet Explorer 11 короче, и есть некоторые интересные изменения:
Кода -копия выглядит следующим образом:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; RV 11.0) как гекко
Для строк пользовательского агента для Internet Explorer 10 в Windows 7
Кода -копия выглядит следующим образом:
Mozilla/5.0 (совместимо; MSIE 10.0; Windows NT 6.1; WOW64; TRIDET/6.0)
Наиболее очевидное отличие состоит в том, что тег «MSIE» строки пользователя-агента в браузере Internet Explorer была удалена. Также убедительным является добавление «как геккона» к хвосту пользовательского агента. Это показывает, что Internet Explorer предпочел бы быть признанным в браузере геккона, чем сам интернет -проводник. Safari-это первый браузер, добавленный «как гекко», так что любой может понюхать символ «геккона» в строке пользователя-агента, чтобы позволить браузеру пройти.
Теперь любой код, который ищет «MSIE», не работает по новой строке пользователя-агента. Вы по -прежнему можете искать персонажа «Trident», чтобы определить, что это браузер IE (логотип «Trident» был введен с Internet Explorer). Настоящая версия Internet Explorer идентифицирована «RV».
Кроме того, также изменилась информация объекта Navigator, которая дополнительно скрывает используемый браузер.
navigator.appname установлен на "Netscape"
Navigator.product установлен на «Гекко»
Это может показаться попыткой подрачно обмануть разработчика, но на самом деле это HTML5. Свойство Navigator.Product должно быть «гекконом», а Navigator.AppName также должен быть «NetScape» или более конкретным. Но Internet Explorer 11 не хватает этого странного предложения.
Побочные эффекты, вызванные изменениями в информации о навигаторах, обнаружение браузера на основе логики JavaScript, могут быть недоступны, в результате чего Internet Explorer 11 распознается в качестве браузера на основе геккона.
документ. Все и его друзья
С тех пор, как IE4, Document.Ll сделал все в браузере IE. Document.getElementById (), реализованный ранее, аналогичен документу. Все является методом получения ссылки на элемент DOM. Хотя документ. Все поддерживает поддержку DOM от IE5 до IE10. Однако в 11 -м, продукт, оставшийся от этой эпохи, был настроен на возврат FALSE, что означает, что любое суждение филиала кода, основанное на документе. Все потерпит неудачу в IE11, даже если код фактически использует документ. Все для работы должным образом.
Другим наследием является AttedEvent (), который добавляет функцию события, аналогичную методу DetachEvent (). Этот метод был удален из IE11. Эти методы удаляются, чтобы избежать некоторых логических суждений, таких как:
Кода -копия выглядит следующим образом:
Функция addEvent (элемент, тип, обработчик) {
if (element.attachevent) {
element.attachevent ("on" + тип, обработчик);
} else if (element.addeventListener) {
element.addeventListener (тип, обработчик, false);
}
}
Конечно, мы рекомендуем, чтобы версия, которую вы лучше используете для тестирования, всегда стабильны и соответствовали стандартам. На некотором уровне удаление метода AttactEvent не вызывает никакого дискомфорта. Тем не менее, Интернет полон логических кодов обнаружения функций для Интернета. Удаление метода AttactEvent гарантирует, что любой код, записанный выше, будет использовать стандартную версию вместо методов IE-специфических.
Некоторые другие удаленные функции:
window.execscript () - IE версия метода eval ()
window.doscroll () - т.е. метод прокрутки окна
Script.onreadyStateChange - Изменения состояния сценария загрузки в т.е.
script.readystate - состояние загрузки скрипта в IE
Document.selection-в настоящее время выбранный текст в IE
document.createstyleSheet-Create Stylesship Document в IE
Style.stylesheet-объект стиля в браузере IE, который ссылается на лист стиля
Все эти методы браузера IE заменяются стандартными функциями. После удаления этих функций и методов код поперечного браузера, основанный на стандартном обнаружении функциональных объектов, все еще может функционировать нормально без изменения.
в заключение
IE11, наверное, лучший браузер IE в течение длительного времени. Microsoft, наконец, готовится устранить ошибки, сделанные в прошлом, и готова начать с браузеров на основе текущих стандартов. Удаление старых функций и изменение строк пользовательских агентов, которые не распознаются в качестве браузеров IE, является уникальной практикой, которая гарантирует, что все веб -сайты продолжают работать. Если веб -приложение использует обнаружение функций вместо браузера, код следует запускать в IE11. Для приложений, которые используют нюхание пользователя-агента, пользователи все еще могут видеть веб-сайт с хорошей функциональностью, потому что IE11 имеет отличную поддержку для стандарта.
Будущее без кода филиала IE, давайте с нетерпением ждем его вместе.
(Обновлено 2 июля 2013 г.), документ. Все упомянутые в ревизии фактически не были удалены, но были изменены на Falsesy
Я давно не переводил статью. На этот раз я перевел блог Николаса С. Закаса. Оригинальный текст здесь: http://www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-call-me-ie/