Heim >Web-Frontend >js-Tutorial >Einführung in den Internet Explorer 11-Browser: Nennen Sie mich nicht IE

Einführung in den Internet Explorer 11-Browser: Nennen Sie mich nicht IE

PHPz
PHPznach vorne
2016-05-16 16:35:052851Durchsuche

In diesem Artikel wird hauptsächlich die Einführung in den Internet Explorer 11-Browser vorgestellt: Nennen Sie mich nicht IE, Freunde in Not können sich darauf beziehen.

Letzte Woche hat Microsoft offiziell die erste Vorschauversion von Internet Explorer 11 mit Windows 8.1 veröffentlicht. Damit ist es an der Zeit, den verschiedenen Gerüchten über durchgesickerte Versionen dieses umstrittenen Webbrowsers ein Ende zu bereiten. Wir kennen jetzt einige wichtige Details über Internet Explorer 11, einschließlich der Unterstützung für WebGL, Prefetch, Prerender, Flexbox, Mutation Observer und andere Webstandards. Was vielleicht noch interessanter bei IE11 ist, ist, dass es sich nicht um IE handelt.

Zum ersten Mal seit langer Zeit hat Microsoft einige Funktionen aus dem Internet Explorer-Browser entfernt. Auch die User-Agent-Zeichenfolge hat sich geändert. Es scheint, dass Microsoft seinen eigenen Ansatz aufgegeben hat, sodass der vorhandene Codezweig, der den IE erkennt, im Internet Explorer 11-Browser false zurückgibt, sei es in Javascript oder auf dem Server.

Benutzeragentenänderungen

Im Vergleich zu früheren Versionen ist die Benutzeragentenzeichenfolge von Internet Explorer 11 kürzer und es gibt einige interessante Änderungen:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko

Für die User-Agent-Zeichenfolge von Internet Explorer 10 unter Windows 7

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

Der offensichtlichste Unterschied besteht darin, dass immer das „MSIE Das in der Internet Explorer-Benutzeragentenzeichenfolge vorhandene Tag wurde entfernt. Auffällig ist auch der Zusatz „like Gecko“ am Ende des Benutzeragenten. Dies deutet darauf hin, dass Internet Explorer eher als Gecko-Browser als als Internet Explorer selbst identifiziert wird. Safari war der erste Browser, der „like Gecko“ hinzufügte, sodass jeder die „Gecko“-Zeichen im User-Agent-String ausspionieren und den Browser passieren lassen konnte.

Jetzt funktioniert kein Sniffing-Code, der nach „MSIE“ sucht, unter der neuen User-Agent-Zeichenfolge. Sie können weiterhin nach „Trident“-Zeichen suchen, um sicherzustellen, dass es sich um IE handelt (das „Trident“-Logo wurde mit Internet Explorer eingeführt). Die echte Version des Internet Explorers wird durch „rv“ identifiziert.

Darüber hinaus wurden auch die Informationen des Navigatorobjekts geändert, wodurch der verwendete Browser weiter verschleiert wird.

navigator.appName ist auf „Netscape“ eingestellt
navigator.product ist auf „Gecko“ eingestellt

Dies mag wie ein hinterlistiger Versuch aussehen, Entwickler auszutricksen, aber diese sind tatsächlich HTML5-spezifiziert . Das Attribut „navigator.product“ muss „Gecko“ sein und der Name „navigator.appName“ sollte ebenfalls „Netscape“ oder genauer sein. Aber Internet Explorer 11 befolgt diesen seltsamen Rat nicht.

Als Nebeneffekt der Änderung der Navigatorinformationen ist die auf der verwendeten Javascript-Logik basierende Browsererkennung möglicherweise nicht verfügbar, was dazu führt, dass Internet Explorer 11 als Gecko-basierter Browser erkannt wird.

document.all und seine Freunde

Seit IE4 ist document.all im IE-Browser allmächtig. Ähnlich wie das zuvor implementierte document.getElementById() ist document.all die IE-Methode zum Abrufen einer Referenz auf ein DOM-Element. Obwohl von IE5 bis IE10, unterstützt document.all weiterhin das DOM. Allerdings wurde in 11 das Erbe dieser Ära so eingestellt, dass es „false“ zurückgibt, was bedeutet, dass jede auf document.all basierende Codeverzweigungsbeurteilung in IE11 fehlschlägt, selbst wenn der Code tatsächlich document.all verwendet und normal funktioniert.

Ein weiteres Vermächtnis besteht darin, das attachmentEvent() der Ereignisfunktion hinzuzufügen, ähnlich der detachEvent()-Methode. Diese Methode wurde aus IE11 entfernt. Diese Methoden werden entfernt, um einige logische Urteile zu vermeiden, wie zum Beispiel:

function addEvent(element, type, handler) {
    if (element.attachEvent) {
        element.attachEvent("on" + type, handler);
    } else if (element.addEventListener) {
        element.addEventListener(type, handler, false);
    }
}

Natürlich empfehlen wir Ihnen, die beste Version zum Testen zu verwenden, die immer stabil ist und den Standards entspricht. Bis zu einem gewissen Grad wird das Entfernen der Methode attachmentEvent keine Unannehmlichkeiten verursachen. Allerdings ist das Internet mit mangelhaftem Logikcode zur Funktionserkennung übersät. Durch das Entfernen der Methode „attachEvent“ wird sichergestellt, dass jeder auf die oben beschriebene Weise geschriebene Code die Standardversion anstelle der IE-spezifischen Methode verwendet.

Einige andere entfernte Funktionen:

window.execScript() – die IE-Version der eval()-Methode

window.doScroll() – die IE-Version des Fensters Scroll-Methode

script.onreadystatechange – Überwachen Sie die Statusänderung des geladenen Skripts im IE

script.readyState – Der Status des Skriptladens im IE

document.selection – IE Der aktuell ausgewählte Text in

document.createStyleSheet – Erstellen Sie ein Stylesheet-Dokument im IE

style.styleSheet – Ein Stilobjekt, das auf ein Stylesheet im IE-Browser verweist


Alle diese IE-Browsermöglichkeiten wurden durch Standardfunktionen ersetzt. Nach dem Entfernen dieser Funktionen und Methoden kann browserübergreifender Code, der auf der Erkennung standardmäßiger Funktionsmerkmale basiert, weiterhin normal und ohne Änderungen ausgeführt werden.

Fazit

Auf lange Sicht ist IE11 möglicherweise der beste IE-Browser. Microsoft bereitet sich endlich darauf vor, die Fehler der Vergangenheit rückgängig zu machen und beginnt mit der Einbindung eines Browsers, der auf den heutigen Standards basiert. Das Entfernen alter Funktionen und das Ändern von Benutzeragentenzeichenfolgen, die vom IE nicht erkannt werden, ist ein einzigartiger Ansatz, der sicherstellt, dass alle Websites weiterhin funktionieren. Wenn die Webanwendung Funktionserkennung anstelle von Browser-Sniffing verwendet, sollte der Code in IE11 ausgeführt werden. Bei Anwendungen, die User-Agent-Sniffing verwenden, können Benutzer weiterhin eine voll funktionsfähige Website sehen, da IE11 über eine hervorragende Standardunterstützung verfügt.

Eine Zukunft ohne IE-Zweigcode kommt bald, freuen wir uns gemeinsam darauf.

(Aktualisiert am 2.7.2013), das in der Überarbeitung erwähnte Dokument wurde nicht tatsächlich gelöscht, sondern in falsch geändert.

Das Obige ist der gesamte Inhalt dieses Kapitels Weitere verwandte Tutorials finden Sie unter JavaScript-Video-Tutorial!

Stellungnahme:
Dieser Artikel ist reproduziert unter:human. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen