Ich leide oft unter dem Problem gegenüber dem, was in diesen Beitrag . Das heißt, ich habe Code in einer Legacy-Anwendung, die nur für Internet Explorer entwickelt wurde, und ich muss sie in Firefox verwenden.
Ich habe zum Beispiel kürzlich an einer App gearbeitet, bei der Click-Events wie folgt manuell simuliert wurden:
%Vor%... was die Anwendung in Firefox komplett zerstört hat. Aber Sie würden diese Informationen nicht in den Antworten auf die andere Frage finden, denn das ist nichts, was Sie jemals versuchen würden, wenn Ihre App zuerst auf Firefox ausgerichtet wäre.
Welche anderen Dinge sollte ein Entwickler, der eine Legacy-Nur-IE-Anwendung aktualisiert, beim Migrieren zu modernen Browsern beachten?
Hier ist, was meine vorherige Forschung aufgedeckt hat. Ich habe gesehen, dass jedes dieser Probleme verhindert, dass eine echte Anwendung in Firefox funktioniert. Bitte zögern Sie nicht zu bearbeiten.
document.createElement
sollte nur einen Tag-Namen haben, aber IE lässt Sie
übergeben Sie beliebiges HTML (mit Attributen usw.)
document.getElementById
sollte nur Elemente mit dem angegebenen id
finden,
aber IE gibt auch Elemente mit dem angegebenen name
IE erstellt implizite globale Variablen für DOM-Elemente, aber die Bezugnahme auf ein Element auf diese Weise in Firefox erzeugt die folgende Warnung:
"Element, das durch ID / NAME in der globaler Geltungsbereich. Verwenden Sie den W3C-Standard document.getElementById () statt. "
IE document.all
ist eine Sammlung aller Elemente im Dokument. Es wird von Firefox nicht unterstützt.
Der Text eines Elements in IE wird mit der Eigenschaft innerText
abgerufen. Firefox ruft diese Eigenschaft textContent
auf.
IE ermöglicht, dass Elemente in Auflistungen unter Verwendung der Funktionssyntax (d. h. mit Klammern) anstelle der normalen Indexierungssyntax für Arrays (d. h. mit Klammern) referenziert werden. Zum Beispiel funktioniert das Folgende in IE: document.forms(0)
. Firefox unterstützt diese Verwendung nicht.
HTMLTableElement
rows
und cells
sollten sich auf HTMLCollections
beziehen, aber
IE erlaubt ihnen, als Funktionen aufgerufen zu werden; Firefox nicht.
IE Standard insertRow
s index
bis -1; Firefox-Fehler, wenn das Argument weggelassen wird.
Die Node.text
Eigenschaft ist IE-only
window.event
ist eine IE-spezifische Möglichkeit, auf Ereignisinformationen zuzugreifen. es ist nicht
unterstützt von Firefox.
Ereignisse werden Elementen in IE mit attachEvent
angehängt. Firefox verwendet addEventListener
. Beachten Sie auch, dass sich die Namen der Ereignisse in jedem Browser geringfügig unterscheiden.
In IE ist es möglich, die Mausposition von Nicht-Mausereignissen zu beziehen, aber nicht in anderen Browsern. Außerdem sind die Namen der Mauskoordinateneigenschaften in IE und Firefox nicht identisch.
IE unterstützt eine Methode click
zum Auslösen des Ereignisses onclick
in HTML-Elementen. Keine solche Funktion existiert in Firefox.
Firefox teilt Textknoten in 4096-char-Blöcke auf; IE nicht. Dies
bedeutet, dass Dinge wie childNodes
in IE und Firefox anders sind.
Internet Explorer definiert eine parseError.errorCode
-Eigenschaft an
XMLDocuments zum Erkennen von Parserfehlern. Firefox lädt ein XML-Dokument, das Fehlerinformationen im Dokument enthält, mit documentElement.nodeName=="parsererror"
.
IE ignoriert Leerzeichen in XML; firstChild
gibt immer die erste zurück
ELEMENT_NODE
Die Node.xml
Eigenschaft ist IE-only
Tags und Links javascript internet-explorer dom firefox