Was sind die typischen Gründe, warum Javascript in IE nicht funktioniert?

7

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?

    
Wayne Burkett 05.03.2011, 23:20
quelle

2 Antworten

20

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.

Das DOM

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

zurück

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

Ereignisse

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.

XML

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

Weiter lesen

Wayne Burkett 05.03.2011, 23:42
quelle
1

Sie sollten beachten, dass Microsoft ein Problem damit hat, ihre eigene Version von allem zu erstellen und sie nach sich selbst zu benennen.

    
Kayla 05.03.2011 23:28
quelle