1. Document.FormName.Item ("itemName") Problema
Descripción del problema: en IE, puede usar document.formname.item ("itemname") o document.formname.elements ["elementname"]; En Firefox, solo puede usar document.formname.elements ["ElementName"].
Solución: use document.formname.elements ["ElementName"] de manera unificada.
2. Problema de objetos de recopilación
Descripción del problema: en IE, puede usar () o [] para obtener el objeto de clase de colección; En Firefox, solo puede usar [] para obtener el objeto de clase de recolección.
Solución: Use [] para obtener objetos de clase de recolección de manera unificada.
3. Problemas de atributos personalizados
Descripción del problema: en IE, puede usar el método para obtener atributos regulares para obtener atributos personalizados, o puede usar getAttribute () para obtener atributos personalizados; En Firefox, solo puede usar getAttribute () para obtener atributos personalizados.
Solución alternativa: obtenga uniformemente atributos personalizados a través de getAttribute ().
4. Problema eval ("idname")
Descripción del problema: en IE, puede usar eval ("idname") o getElementById ("idname") para obtener el objeto HTML con IdName; En Firefox, solo puede usar GetElementById ("IdName") para obtener el objeto HTML con IdName.
Solución: use GetElementById ("IdName") para obtener el objeto HTML con ID como idname.
5. El problema del nombre de la variable y la ID de un cierto objeto HTML
Descripción del problema: En IE, la ID del objeto HTML se puede usar directamente como el nombre variable del objeto subordinado del documento, pero no en Firefox; Bajo Firefox, se puede usar el nombre variable que es el mismo que el ID del objeto HTML, pero no en IE.
Solución alternativa: use document.getElementById ("idname") en lugar de document.idname. Es mejor no tomar nombres de variables con la misma ID de objeto HTML para reducir los errores; Al declarar variables, agregue la palabra clave VAR para evitar la ambigüedad.
6. Problema constante
Descripción del problema: en Firefox, puede usar la palabra clave const o la palabra clave var para definir constantes; En IE, solo puedes usar la palabra clave VAR para definir constantes.
Solución: use la palabra clave VAR para definir constantes de manera uniforme.
7. El problema de los atributos de type de entrada.
Descripción del problema: la propiedad de type de entrada en IE es de solo lectura; pero la propiedad de type de entrada bajo Firefox es lectura.
Solución: No modifique la propiedad de entrada. Type. Si tiene que modificarlo, primero puede ocultar la entrada original y luego insertar un nuevo elemento de entrada en la misma posición.
8. Ventana. Problema de eventos
Descripción del problema: Window.Event solo puede ejecutarse en IE, no en Firefox, porque el evento Firefox solo se puede usar en la escena en la que ocurre el evento.
Solución: Agregue los parámetros del evento a la función donde ocurre el evento y use var myEvent = evt? Evt: (Window.event? Window.event: NULL)
Ejemplo:
<input type = "Button" onClick = "dosomthing (event)"/> <script language = "javascript"> función dosomething (evt) {var myEvent = evt? evt: (window.event? window.event: null) ...}9. Event.x y Event.y Problemas
Descripción del problema: En IE, el objeto uniforme tiene atributos X e Y, pero no hay atributos Pagex y Pagey; Bajo Firefox, el objeto uniforme tiene atributos Pagex y Pagey, pero no hay atributos X e Y.
Solución: var myx = event.x? event.x: event.pagex; var myy = event.y? Event.y: Event.Pagey;
Si considera el octavo problema, simplemente use Myevent en lugar de evento.
10. Evento. Problema de calma
Descripción del problema: Bajo IE, el objeto uniforme tiene una propiedad SRCelement, pero no tiene propiedad de destino; Bajo Firefox, el objeto uniforme tiene una propiedad objetivo, pero no hay propiedad de Cicelement.
SOLUCIÓN: Use srcobj = event.srcelement? event.srcelement: event.target;
Si considera el octavo problema, simplemente use Myevent en lugar de evento.
11. Window.location.href Problema
Descripción del problema: en IE o Firefox2.0.x, puede usar Window.location o Window.location.ref; En Firefox1.5.x, solo puede usar Window.location.
Solución alternativa: use Window.location en lugar de Window.location.href. Por supuesto, también puede considerar usar el método ubicación.replace ().
12. Problemas de ventanas modales y no modales
Descripción del problema: en IE, se pueden abrir ventanas modales y no modales a través de ShowModaldialog y ShowModelessDialog; Bajo Firefox, no puede.
Solución: use Window.open (PageUrl, nombre, parámetros) para abrir una nueva ventana.
Si necesita pasar parámetros en la ventana infantil de regreso a la ventana principal, puede usar la ventana. Si la ventana principal necesita controlar la ventana infantil, use VAR Subwindow = Window.open (PageUrl, Nombre, Parámetros); Para obtener el objeto de ventana recién abierto.
Trece problemas de marco e iframe
El siguiente cuadro es un ejemplo:
(1) Objeto de marco de acceso
Es decir: use window.frameid o window.framename para acceder a este objeto de cuadro;
Firefox: use Window.framename para acceder a este objeto de cuadro;
Solución: use Window.document.getElementById ("FrameId") para acceder a este objeto de cuadro;
(2) Contenido de marco de interruptor
Tanto en IE como en Firefox, puede usar Windows.document.getElementById ("FrameId"). Src = "webjx.com.html" o window.framename.location = "webjx.com.html" para cambiar el contenido del marco;
Si necesita pasar los parámetros en el marco de regreso a la ventana principal, puede usar la palabra clave principal en el marco para acceder a la ventana principal.
14. Problema de carga corporal
Descripción del problema: El objeto del cuerpo de Firefox existe antes de que el navegador lea completamente la etiqueta del cuerpo; mientras que el objeto del cuerpo de IE debe existir después de que el navegador lee completamente la etiqueta del cuerpo.
[Nota] Este problema aún no se ha verificado y se modificará después de la verificación.
[Nota] Se ha demostrado que los problemas anteriores no existen en IE6, Opera9 y Firefox2. Un script JS simple puede acceder a todos los objetos y elementos que se han cargado antes del script, incluso si este elemento aún no se ha cargado.
15. Método de delegación de eventos
Descripción del problema: en IE, use document.body.onload = inyect; donde la función inyect () se ha implementado antes de esto; En Firefox, use document.body.onload = inject ();
Solución: use document.body.onload = new function ('inject ()'); o document.body.onload = function () {/* Aquí está el código*/}
[Nota] La diferencia entre función y función
16. La diferencia entre el elemento principal accedido
Descripción del problema: en IE, use obj.ParentElement u obj.ParentNode para acceder al nodo principal de OBJ; Bajo Firefox, use OBJ.ParentNode para acceder al nodo principal de OBJ.
Solución: Debido a que tanto Firefox como IE admiten DOM, OBJ.ParentNode se usa para acceder al nodo principal de OBJ.
17. El problema de inntext.
Descripción del problema: InnteText funciona correctamente en IE, pero InnteText no funciona en Firefox.
Solución alternativa: use TextContent en lugar de inntext en navegadores que no son II.
Ejemplo:
if (navigator.appname.indexof ("explorer")> -1) {document.getElementById ('elemento'). inNTEXT = "mi texto"; } else {document.getElementById ('elemento'). TextContent = "; mi texto"; }[Nota] InnerHTML es compatible con navegadores como IE y Firefox. Otros, como Outerhtml, solo son compatibles con IE, por lo que es mejor no usarlo.
18. Problemas de operación de tabla
Descripción del problema: IE, Firefox y otros navegadores tienen operaciones diferentes en las etiquetas de la tabla. En IE, no está permitido asignar valores internos a la tabla y tr. Cuando se usa JS, usar el método AppendChild no funciona. document.appendChild admite Firefox al insertar filas en tablas, pero IE no las admite.
Solución: inserte las filas en tbody, no las inserte directamente en las tablas
Solución:
// Agregar una línea en blanco a la tabla: var fila = otable.insertrow (-1); var celular = document.createElement ("td"); celular.innerhtml = ""; celular.classname = "xxxx"; fila.appendChild (celda);[Nota] Se recomienda usar conjuntos de marco JS para operar tablas, como jQuery.
• Obtenga el número de filas y columnas de la tabla
En IE, puede usar el siguiente código para obtener el número de filas y columnas:
var Detailt = Grid.gettable ("11"); // Obtener la longitud de la fila var r = detallt.rows.length; // Obtener la longitud de la columna var l = detallt.cells.length;Y obtener la longitud de la columna en Firefox o Google no es válido.
Solución:
var Detailt = Grid.gettable ("11"); // Obtener la longitud de la fila var r = detallt.rows.length; // Obtener la longitud de la columna var l = Detellt.rows [0] .Cells.length;19. Problema de asignación de ancho y altura del objeto
Descripción del problema: la declaración similar a obj.style.height = imgobj.Height in firefox no es válida.
Solución: use obj.style.height = imgobj.height + 'px' en uniforme;
20. setattribute ('estilo', 'color: rojo;')
Soporte de Firefox (excepto es decir, todos los navegadores ahora lo admiten), es decir, no lo admite
Solución: No setAttribute ('estilo', 'color: rojo')
Use object.style.csstext = 'color: rojo;' (Hay excepciones a este escrito)
La mejor manera es usar todos los métodos anteriores, y será infalible.
21. Configuración de nombre de clase
setAttribute ('class', 'styleclass')
Soporte de Firefox, pero IE no es compatible (especifique el nombre del atributo es clase, es decir, no establecerá el atributo de clase del elemento. Por el contrario, IE reconocerá automáticamente el atributo de nombre de clase cuando se use setAttribute)
Solución:
setAttribute ('class', 'styleclass') setAttribute ('classname', 'styLeCLass') o directamente objeto.classname = 'styleclass';Tanto IE como FF soportan Object.ClassName.
22. Establezca eventos con setattribute
var obj = document.getElementById ('objid');
obj.SetAttribute ('OnClick', 'FuncitonName ();');
Firefox es compatible, pero IE no es compatible
Solución:
En IE, la notación de puntos debe usarse para referirse al controlador de eventos requerido, y las funciones anónimas deben asignarse a él.
como sigue:
var obj = document.getElementById ('objid'); obj.OnClick = function () {fucntionName ();};Este método es compatible con todos los navegadores
23. Crea un botón de radio
Navegadores distintos de IE
var rdo = document.createElement ('entrada'); rdo.setAttribute ('type', 'radio'); rdo.setAttribute ('name', 'RadioBTn'); rdo.setAttribute ('valor', 'verificado');ES DECIR:
var rdo = document.createElement ("<input name =" RadioBTn "type =" radio "valor =" checked " />");Solución:
Esta diferencia es diferente de la anterior. Esta vez es completamente diferente, por lo que no hay una forma común de resolverlo, por lo que solo si
Afortunadamente, es decir, puede reconocer el atributo UniqueID del documento, que otros navegadores no pueden reconocer. Problema resuelto.
La solución rápida a los 23 problemas de compatibilidad de múltiples browser en JavaScript es el contenido completo que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.