Im Folgenden wird IE anstelle von Internet Explorer und MF anstelle von Mozzila Firefox verwendet.
1. document.form.item-Problem
(1)Bestehende Probleme:
Es gibt viele Anweisungen wie document.formName.item("itemName") im vorhandenen Code, die nicht unter MF ausgeführt werden können.
(2)Lösung:
Verwenden Sie stattdessen document.formName.elements["elementName"]
(3)Andere
Siehe 2
2. Probleme mit Sammlungsobjekten
(1)Bestehende Probleme:
Viele Sammlungsklassenobjekte im vorhandenen Code verwenden (), wenn sie auf sie zugreifen. IE kann dies akzeptieren, MF jedoch nicht.
(2)Lösung:
Verwenden Sie stattdessen [] zum Abonnieren. Beispiel: document.forms("formName") wird in document.forms["formName"] geändert.
Ein weiteres Beispiel: document.getElementsByName("inputName")(1) wird in document.getElementsByName("inputName")[1] geändert.
(3) Andere
3. window.event
(1)Bestehende Probleme:
Funktioniert bei MF mit window.event nicht
(2)Lösung:
Das Ereignis von MF kann nur am Ort des Ereignisses verwendet werden, und dieses Problem kann noch nicht gelöst werden. Es kann wie folgt geändert werden:
Originalcode (kann im IE ausgeführt werden):
<input type="button" name="someButton" value="Submit" onclick="javascript:gotoSubmit()"/>
...
<script language="javascript">
Funktion gotoSubmit() {
...
Alert(window.event); // window.event verwenden
...
}
</script>
Neuer Code (kann in IE und MF ausgeführt werden):
<input type="button" name="someButton" value="Submit" onclick="javascript:gotoSubmit(event)"/>
...
<script language="javascript">
Funktion gotoSubmit(evt) {
evt = evt ? evt : (window.event ? window.event : null);
...
alarm(evt); // evt verwenden
...
}
</script>
Wenn sich außerdem die erste Zeile des neuen Codes nicht ändert und mit dem alten Code übereinstimmt (d. h. der gotoSubmit-Aufruf gibt keine Parameter an), wird er weiterhin nur im IE ausgeführt, es tritt jedoch kein Fehler auf. Daher ist der TPL-Teil dieser Lösung weiterhin mit dem alten Code kompatibel.
4. Das Problem der Verwendung der ID des HTML-Objekts als Objektname
(1)Bestehende Probleme
Im IE kann die ID des HTML-Objekts direkt als Variablenname des untergeordneten Objekts des Dokuments verwendet werden. Im MF nicht möglich.
(2)Lösung
Verwenden Sie getElementById("idName") anstelle von idName als Objektvariable.
5. Problem beim Abrufen des Objekts mithilfe der IDName-Zeichenfolge
(1)Bestehende Probleme
Im IE können Sie eval(idName) verwenden, um das HTML-Objekt mit der ID idName abzurufen, jedoch nicht in MF.
(2)Lösung
Verwenden Sie getElementById(idName) anstelle von eval(idName).
6. Das Problem, dass der Variablenname mit der ID eines HTML-Objekts übereinstimmt
(1)Bestehende Probleme
Da in MF die Objekt-ID nicht als Name des HTML-Objekts verwendet wird, können Sie denselben Variablennamen wie die HTML-Objekt-ID verwenden, jedoch nicht im IE.
(2)Lösung
Fügen Sie beim Deklarieren von Variablen immer var hinzu, um Mehrdeutigkeiten zu vermeiden, damit sie im IE normal ausgeführt werden können.
Darüber hinaus ist es am besten, nicht denselben Variablennamen wie die HTML-Objekt-ID zu verwenden, um Fehler zu reduzieren.
(3)Andere
Siehe Frage 4
7. Probleme mit Event.x und event.y
(1)Bestehende Probleme
Im IE verfügt das Ereignisobjekt über x- und y-Attribute, in MF jedoch nicht.
(2)Lösung
In MF ist das Äquivalent von event.x event.pageX. Aber event.pageX ist im IE nicht verfügbar.
Daher wird event.clientX anstelle von event.x verwendet. Diese Variable existiert auch im IE.
Es gibt geringfügige Unterschiede zwischen event.clientX und event.pageX (wenn die gesamte Seite über Bildlaufleisten verfügt), aber in den meisten Fällen sind sie gleichwertig.
Wenn Sie möchten, dass es genau das Gleiche ist, können Sie sich etwas mehr Mühe machen:
mX = event.x ? event.x : event.pageX;
Dann verwenden Sie mX anstelle von event.x
(3)Andere
event.layerX existiert sowohl im IE als auch im MF. Ob die spezifische Bedeutung unterschiedlich ist, wurde noch nicht getestet.
8. Über den Rahmen
(1)Bestehende Probleme
Im IE können Sie window.testFrame verwenden, um den Frame abzurufen, jedoch nicht in mf.
(2)Lösung
Der Hauptunterschied zwischen mf und ie in der Verwendung von Frame ist:
Wenn im Frame-Tag folgende Attribute geschrieben sind:
<frame src="xx.htm" id="frameId" name="frameName" />
Dann kann dh über die ID oder den Namen auf das diesem Frame entsprechende Fensterobjekt zugegriffen werden, während mf nur über den Namen auf das diesem Frame entsprechende Fensterobjekt zugreifen kann. Wenn beispielsweise das obige Frame-Tag im HTM im oberen Fenster geschrieben ist Es kann wie folgt darauf zugegriffen werden
Das heißt: window.top.frameId oder window.top.frameName, um auf dieses Fensterobjekt zuzugreifen
mf: Auf dieses Fensterobjekt kann nur über window.top.frameName zugegriffen werden.
Darüber hinaus kann window.top.document.getElementById("frameId") sowohl in mf als auch in ie verwendet werden, um auf das Frame-Tag und window.top.document zuzugreifen . getElementById("testFrame").src = 'xx.htm', um den Inhalt des Frames zu ändern, können Sie auch window.top.frameName.location = 'xx.htm' verwenden, um den Inhalt des Frames zu ändern Beschreibung von Frame und Fenster, siehe BBS-Artikel „Fenster und Frame“ und die Tests im Verzeichnis /test/js/test_frame/
----adun 2004.12.09 Änderung
9. In mf müssen die von Ihnen definierten Attribute durch getAttribute() abgerufen werden
10. In mf gibt es kein parentElement parement.children, sondern verwenden
parentNode parentNode.childNodes
Die Bedeutung des Index von childNodes ist im IE unterschiedlich und MF verwendet die DOM-Spezifikation, und leere Textknoten werden in childNodes eingefügt.
Im Allgemeinen kann dieses Problem durch node.getElementsByTagName() vermieden werden.
Wenn in HTML ein Knoten fehlt, interpretieren IE und MF beispielsweise parentNode unterschiedlich
<Formular>
<Tabelle>
<Eingabe/>
</table>
</form>
Der Wert von input.parentNode in MF ist form, während der Wert von input.parentNode im IE ein leerer Knoten ist.
Es gibt keine RemoveNode-Methode für Knoten in MF. Sie müssen die folgende Methode node.parentNode.removeChild(node)
11
verwenden.const-Problem
(1)Bestehende Probleme:
Das Schlüsselwort const kann im IE nicht verwendet werden. Zum Beispiel const constVar = 32; Dies ist ein Syntaxfehler im IE.
(2)Lösung:
Verwenden Sie nicht const, sondern stattdessen var.
12. Körperobjekt
Der Body von MF ist vorhanden, bevor der Body-Tag vollständig vom Browser gelesen wurde, während der IE vorhanden sein muss, nachdem der Body vollständig gelesen wurde.
13. URL-Codierung
Wenn Sie in js eine URL schreiben, schreiben Sie einfach „nicht schreiben“. Beispiel: var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = URL, dann ist es sehr wahrscheinlich, dass die URL nicht normal angezeigt wird und die Parameter nicht korrekt an den Server übertragen werden. Im Allgemeinen meldet der Server einen Fehler, dass der Parameter nicht gefunden wird ist, wenn es sich in tpl befindet, da tpl der XML-Spezifikation entspricht und die Anforderung & als & geschrieben wird.
Im Allgemeinen kann MF & in js nicht erkennen.
14. NodeName- und TagName-Problem
(1)Bestehende Probleme:
In MF haben alle Knoten den Wert „nodeName“, aber textNode hat keinen Wert „tagName“. Im IE scheint die Verwendung von nodeName so
Es liegt ein Problem vor (ich habe die spezifische Situation nicht getestet, aber mein IE ist mehrmals gestorben).
(2)Lösung:
Verwenden Sie tagName, sollte aber erkennen, ob es leer ist.
15. Elementattribute
Das Attribut input.type ist unter IE schreibgeschützt, kann aber unter MF geändert werden.
16. Probleme mit document.getElementsByName() und document.all[name]
(1)Bestehende Probleme:
Im IE können getElementsByName() und document.all[name] nicht zum Abrufen von div-Elementen verwendet werden (es ist nicht bekannt, ob es andere Elemente gibt, die nicht abgerufen werden können).