A continuación, se utiliza IE en lugar de Internet Explorer y MF en lugar de Mozzila Firefox
1. Problema document.form.item
(1)Problemas existentes:
Hay muchas declaraciones como document.formName.item("itemName") en el código existente, que no se pueden ejecutar en MF.
(2)Solución:
Utilice document.formName.elements["elementName"] en su lugar
(3)Otros
Ver 2
2. Problemas con los objetos de colección.
(1)Problemas existentes:
Muchos objetos de clase de colección en el código existente usan () al acceder a ellos. IE puede aceptar esto, pero MF no.
(2)Solución:
Utilice [] para subíndices en su lugar. Por ejemplo: document.forms("formName") se cambia a document.forms["formName"].
Otro ejemplo: document.getElementsByName("inputName"))(1) se cambia a document.getElementsByName("inputName")[1]
(3) Otros
3. ventana.evento
(1)Problemas existentes:
No funciona en MF usando window.event
(2)Solución:
El evento de MF solo se puede utilizar en la escena donde ocurre el evento y este problema aún no se puede resolver. Se puede cambiar así:
Código original (se puede ejecutar en IE):
<tipo de entrada="botón" nombre="algúnBotón" valor="Enviar" onclick="javascript:gotoSubmit()"/>
...
<lenguaje de escritura="javascript">
función gotoEnviar() {
...
alerta(ventana.evento); // uso ventana.evento);
...
}
</script>
Nuevo código (se puede ejecutar en IE y MF):
<tipo de entrada="botón" nombre="algúnBotón" valor="Enviar" onclick="javascript:gotoSubmit(evento)"/>
...
<lenguaje de escritura="javascript">
función gotoEnviar(evt) {
evt = evt? evt: (ventana.evento? ventana.evento: nulo);
...
alerta(evt); // usa evt
...
}
</script>
Además, si la primera línea del nuevo código no cambia y es la misma que el código anterior (es decir, la llamada gotoSubmit no proporciona parámetros), solo se ejecutará en IE, pero no se producirá ningún error. Por lo tanto, la parte tpl de esta solución sigue siendo compatible con el código anterior.
4. El problema de utilizar la identificación del objeto HTML como nombre del objeto.
(1)Problemas existentes
En IE, el ID del objeto HTML se puede utilizar directamente como nombre de variable del objeto subordinado del documento. No es posible en MF.
(2)Solución
Utilice getElementById("idName") en lugar de idName como variable de objeto.
5. Problema al obtener un objeto usando la cadena idName
(1)Problemas existentes
En IE, puede usar eval(idName) para obtener el objeto HTML con el id idName, pero no en MF.
(2)Solución
Utilice getElementById(idName) en lugar de eval(idName).
6. El problema de que el nombre de la variable es el mismo que el ID de un objeto HTML
(1)Problemas existentes
En MF, debido a que la identificación del objeto no se usa como nombre del objeto HTML, puede usar el mismo nombre de variable que la identificación del objeto HTML, pero no en IE.
(2)Solución
Al declarar variables, siempre agregue var para evitar ambigüedades, de modo que puedan ejecutarse normalmente en IE.
Además, es mejor no utilizar el mismo nombre de variable que la identificación del objeto HTML para reducir errores.
(3)Otros
Consulte la pregunta 4.
7. Problemas con Event.x y event.y
(1)Problemas existentes
En IE, el objeto de evento tiene atributos x, y, pero no en MF.
(2)Solución
En MF, el equivalente de event.x es event.pageX. Pero event.pageX no está disponible en IE.
Por lo tanto, se utiliza event.clientX en lugar de event.x. Esta variable también existe en IE.
Existen diferencias sutiles entre event.clientX y event.pageX (cuando toda la página tiene barras de desplazamiento), pero son equivalentes la mayor parte del tiempo.
Si quieres que sea exactamente igual, puedes pasar por un poco más de problemas:
mX = evento.x? evento.x: evento.páginaX;
Luego use mX en lugar de event.x
(3)Otros
event.layerX existe tanto en IE como en MF. Aún no se ha probado si el significado específico es diferente.
8. Acerca del marco
(1)Problemas existentes
En IE, puedes usar window.testFrame para obtener el marco, pero no en mf.
(2)Solución
La principal diferencia entre mf e ie en el uso del marco es:
Si los siguientes atributos están escritos en la etiqueta del marco:
<frame src="xx.htm" id="frameId" nombre="frameName" />
Entonces, es decir, puede acceder al objeto de ventana correspondiente a este marco a través de id o nombre, mientras que mf solo puede acceder al objeto de ventana correspondiente a este marco a través de nombre. Por ejemplo, si la etiqueta del marco anterior está escrita en htm dentro de la ventana superior, entonces. se puede acceder así
es decir: window.top.frameId o window.top.frameName para acceder a este objeto de ventana
mf: solo se puede acceder a este objeto de ventana a través de window.top.frameName.
Además, window.top.document.getElementById("frameId") se puede utilizar tanto en mf como en ie para acceder a la etiqueta del marco y a window.top.document. getElementById("testFrame").src = 'xx.htm' para cambiar el contenido del marco, también puede usar window.top.frameName.location = 'xx.htm' para cambiar el contenido del marco. descripción del marco y la ventana, consulte el artículo de bbs 'ventana y marco' y las pruebas en el directorio /test/js/test_frame/
----adun 2004.12.09 Modificación
9. En mf, los atributos definidos por usted mismo deben obtenerse mediante getAttribute()
10. No hay parentElement parement.children en mf pero usa
parentNode parentNode.childNodes
El significado del subíndice de childNodes es diferente en IE y MF usa la especificación DOM, y se insertarán nodos de texto en blanco en childNodes.
Generalmente, este problema se puede evitar mediante node.getElementsByTagName().
Cuando falta un nodo en html, IE y MF interpretan parentNode de manera diferente, por ejemplo
<formulario>
<tabla>
<entrada/>
</tabla>
</formulario>
El valor de input.parentNode en MF es formulario, mientras que el valor de input.parentNode en IE es un nodo vacío.
No existe un método removeNode para los nodos en MF. Debe utilizar el siguiente método node.parentNode.removeChild(node)
11. .const Problema
(1)Problemas existentes:
La palabra clave const no se puede utilizar en IE. Como const constVar = 32; este es un error de sintaxis en IE.
(2)Solución:
No uses const, usa var en su lugar.
12. objeto del cuerpo
El cuerpo de MF existe antes de que el navegador lea completamente la etiqueta del cuerpo, mientras que IE debe existir después de que el cuerpo se lea por completo.
13. Codificación de URL
.
En js, si escribe una URL, simplemente escriba "no escribir". Por ejemplo, var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url, entonces es muy probable que la URL no se muestre normalmente y los parámetros no se transmitan correctamente al servidor. Generalmente, el servidor informará un error de que no se encuentra el parámetro. es si está en tpl, porque tpl cumple con la especificación xml y el requisito & está escrito como &
Generalmente, MF no puede reconocer &
14. Problema con nombre de nodo y nombre de etiqueta
(1)Problemas existentes:
En MF, todos los nodos tienen el valor nodeName, pero textNode no tiene el valor tagName. En IE, el uso de nodeName parece
Hay un problema (no he probado la situación específica, pero mi IE ha muerto varias veces).
(2)Solución:
Utilice tagName pero debería detectar si está vacío.
15. Atributos del elemento
El atributo input.type es de solo lectura en IE, pero se puede modificar en MF.
16. Problemas con document.getElementsByName() y document.all[nombre]
(1)Problemas existentes:
En IE, getElementsByName() y document.all[name] no se pueden utilizar para obtener elementos div (no se sabe si hay otros elementos que no se pueden obtener).