script respuesta que gratis eliminar elimina detener depurar como chrome aviso activar jquery firefox yui javascript

jquery - respuesta - eliminar script en firefox



¿Cuáles son las razones típicas por las que Javascript desarrollado en Firefox falla en IE? (18)

Desarrollé algunas páginas mejoradas de JavaScript que funcionan bien en Firefox y Safari recientes. Me perdí para comprobar en Internet Explorer, y ahora me parece que las páginas no funcionan en IE 6 y 7 (hasta ahora). Los scripts de alguna manera no se ejecutan, las páginas se muestran como si javascript no estuviera allí, aunque se ejecuta algún javascript. Estoy usando bibliotecas propias con dom manipulation, de YUI 2 utilizo YUI-Loader y XML-Http-Request, y en una página utilizo "psupload", que depende de JQuery.

Instalaré Microsoft Script Editor desde Office XP y ahora depuraré. También escribiré pruebas específicas ahora.

¿Cuáles son los puntos de falla típicos de IE? En qué dirección puedo mantener mis ojos abiertos.

Encontré esta página, que muestra algunas diferencias. visita: Quirksmode

¿Puede usted por su experiencia nombrar algunas cosas típicas que debo buscar primero?

También voy a hacer más preguntas aquí para tareas específicas más adelante, pero por ahora estoy interesado en tu experiencia por qué IE generalmente falla en las secuencias de comandos que funcionan bien en Firefox.

Editar: ¡ Gracias por todas esas excelentes respuestas!

Mientras tanto, he adaptado todo el código para que también funcione con Internet Explorer. Integré jQuery y construí mis propias clases encima ahora. Este fue mi error básico, que no construí todas mis cosas en jQuery desde el principio. Ahora tengo.

También JSLint me ayudó mucho.

Y muchos de los problemas individuales de las diferentes respuestas ayudaron.


Compatibilidad con JavaScript diferente

IE no admite (la mayoría de) las extensiones agregadas a JavaScript desde 1.5.

Nuevo en 1.6

  • Array Methods - indexOf() , lastIndexOf() , every() , filter() , forEach() , map() , some()
  • for each ... in - itera valores en lugar de nombres de propiedad.

Nuevo en 1.7

Nuevo en 1.8

  • Array Methods - reduce() , reduceRight()
  • Accesos directos para definir funciones.

Algunas de estas cosas requieren que especifiques un número de versión de JavaScript para ejecutar (que se dividirá en IE), pero algunas cosas como [1,2,3].indexOf(2) pueden no parecer tan importantes, hasta que intentas ejecutarlo en IE


Acabo de encontrar uno esta mañana, un compañero de trabajo configuró la etiqueta del script como: <script type="application/javascript"> porque su autocompletar tenía eso antes que "text / javascript"

Pero, resulta que IE simplemente ignora todo el script si usa "application / javascript", necesita usar "text / javascript"


Algunos objetos nativos son de solo lectura sin realmente serlo (puedes escribirles pero no tiene ningún efecto). Por ejemplo, un javascript avanzado común se basa en ampliar el objeto Element anulando los métodos del sistema, por ejemplo, cambiando Element.prototype.appendChild () para hacer más que agregar un nodo secundario, por ejemplo, inicializarlo con los datos de los padres. Esto fallará silenciosamente en IE6 - el método original se invocará en objetos nuevos en lugar del nuevo.

Algunos navegadores (no recuerdo cuál ahora) consideran que las líneas nuevas entre etiquetas HTML son nodos de texto, mientras que otros no. Así childNodes (n), nextSibling (), firstChild () y similares se comportarán de manera muy diferente.


El hecho es que IE no admite JavaScript ... Es compatible con su propia implementación de ECMAScript: JScript ... que es algo diferente ...


El otro día encontré una rareza extraña con Internet Explorer. Estaba usando YUI, y reemplazando el contenido de un cuerpo de tabla () configurando innerHTML

Y.one(''#elementId'').set(''innerHTML'', ''<tr><td>Column 1</td></tr>'');

Esto funcionaría en todos los navegadores, EXCEPTO IE. Finalmente descubrí que no podías reemplazar el innerHTML de una tabla en IE. Tuve que crear un nodo usando YUI y luego agregar ese nodo.

var myNode = Y.node.create(''<tr><td>Column 1</td></tr>''); Y.one(''#elementId'').append(myNode);

¡Fue divertido de averiguar!


El uso de console.log() para generar errores en la consola de error de Firefox hará que sus scripts fallen en IE. Tengo que acordarme de eliminarlos cuando pruebes en IE.


Hay muchas cosas, pero una trampa en la que solía caer era que muchos navegadores aceptan JSON sin nombres entre comillas, mientras que ie6 y ie7 no.

{ name: "Jakob" } // will often work, but not in ie6/ie7 { "name": "Jakob" } // Better!

Editar : para aclarar, esto es solo un problema cuando se requiere JSON real, a diferencia de un objeto literal. JSON es un subconjunto de la sintaxis literal del objeto y se entiende como un formato de intercambio de datos (como XML) por lo que está diseñado para ser más selectivo.


IE es muy estricto sobre la falta ";" por lo general es eso.


IE no es un navegador moderno y solo sigue ECMAScript libremente.


Las comas extra y las comas que faltaban solían ser un problema habitual en IE mientras funcionaba sin problemas en FF.


Las comillas finales en matrices y literales de objetos solían ser un problema, no se han comprobado recientemente (es decir, IE8):

var a = [ 1, 2, 3, ]; var o = { a:1, b:2, c:3, };

Esto causaría un código adicional al generar dichas estructuras en el lado del servidor.


Las principales diferencias entre JavaScript en IE y JavaScript en los navegadores modernos (por ejemplo, Firefox) se pueden atribuir a las mismas razones detrás de las diferencias en CSS / (X) HTML entre navegadores. En el pasado no existía un estándar de facto; IE / Netscape / Opera libró una guerra de territorio, implementando la mayoría de las especificaciones, pero también omitiendo algunas y haciendo especificaciones propietarias para obtener ventajas entre sí. Podría seguir adelante, pero saltemos al lanzamiento de IE8: se evitó / despreció a JavaScript durante años, y con el auge de FF y el desprecio de webcomm, IE optó principalmente por avanzar en su CSS desde IE6 en adelante. Y básicamente dejó atrás el soporte de DOM. El soporte de DOM de IE8 podría ser también IE6, que se lanzó en 2001 ... por lo que el soporte DOM de IE está casi una década atrás de los navegadores modernos. Si tiene discrepancias de JavaScript propias de un motor de diseño, lo mejor es atacarlo de la misma manera que asumimos los problemas de CSS; Dirigiéndose a ese navegador. NO UTILICE SNIFFING BROWSER, use detección de características para olfatear su navegador / su nivel de soporte DOM.

JScript no es la implementación propia de IE de ECMAScript; JScript fue la respuesta de IE al JavaScript de Netscape, y ambos surgieron antes de ECMAScript.

En cuanto a los atributos de tipo en el elemento script, escriba = "text / javascript" es el estándar predeterminado (al menos en HTML5), por lo que nunca necesitará un atributo de tipo a menos que su script no sea JavaScript.

En cuanto a IE no es compatible con innerHTML ... innerHTML fue inventado por IE y todavía hoy NO es un estándar DOM. Otros navegadores lo han adoptado porque es útil, por lo que puedes usarlo en todos los navegadores. En cuanto a las tablas que cambian dinámicamente, MSDN dice "debido a la estructura específica requerida por las tablas, las propiedades innerText y innerHTML de la tabla y los objetos tr son de solo lectura". No sé cuánto de eso fue cierto inicialmente, pero es evidente que los navegadores modernos lo han descubierto al lidiar con las complejidades del diseño de la mesa.

Recomiendo leer PPK en JavaScript Jeremy Keith''s DOM Scripting JavaScript de Douglas Crockford : The Good Parts y Christian Beginning ''s Beginning JavaScript con DOM Scripting y Ajax para obtener una buena comprensión de JavaScript.

En lo que respecta a Frameworks / Libraries, si aún no tiene una comprensión sólida de JavaScript, debe evitarlos. Hace 2 años caí en la trampa de jQuery, y si bien pude realizar hazañas magníficas, nunca aprendí una maldita cosa sobre la codificación de JavaScript correctamente. En retrospectiva, jQuery es un asombroso kit de herramientas de DOM, pero mi fracaso para aprender cierres adecuados, herencia prototípica, etc., no solo me devolvió mi conocimiento personal, sino que mi trabajo comenzó a recibir grandes éxitos de rendimiento porque no tenía ni idea de lo que estaba haciendo.

JavaScript es el idioma del navegador; si es un ingeniero cliente / front-end, es de suma importancia que ordene JavaScript. Node.js está brindando JavaScript full tilt, veo inmensos avances tomados diariamente en su desarrollo; El JavaScript del servidor será un estándar en un futuro muy cercano. Menciono esto para enfatizar aún más cuán importante es ahora y será JavaScript.

JavaScript generará más ondas que Rails.

Happy Scripting!


Mencionaste jQuery con el que estoy menos familiarizado, pero como referencia general, y específicamente con Prototype, una cosa a tener en cuenta es que se reservan los nombres de palabras / métodos en IE. Sé que a menudo me pone cosas como:

someElement.appendChild(new Element(''label'',{ **for**: someInput.id }).update( someLabelText );

(El nuevo elemento (tagName, propertyHash) es cómo se crean los nuevos elementos en Protitype). En IE, for: debe ser ''for'': porque es una palabra reservada. Lo cual tiene mucho sentido, pero FireFox tolerará esto.

Otro ejemplo:

someElement.wrap(''div'').addClassName(''someClass'')

(el método wrap en Prototype envuelve un elemento en otro) - En IE, en textareas, wrap es una propiedad, y Element.wrap() debe usarse en lugar de la versión metodizada

Estos son dos ejemplos que vienen a mi mente desde mi experiencia. Se basan en prototipos, pero el problema principal no es: tener cuidado con los métodos / etiquetas / identificadores que IE considere palabras reservadas pero FireFox o Safari tolerarán.


Por favor, no dude en actualizar esta lista si ve algún error u omisión, etc.

Nota: IE9 soluciona muchos de los siguientes problemas, por lo que gran parte de esto solo se aplica a IE8 e inferior y, en cierta medida, a IE9 en modo peculiar. Por ejemplo, IE9 admite SVG, <canvas> , <audio> y <video> forma nativa, sin embargo, debe habilitar el modo de cumplimiento de normas para que estén disponibles.

General:

  • Problemas con documentos cargados parcialmente: es una buena idea agregar su JavaScript en una window.onload o evento similar ya que IE no admite muchas operaciones en documentos cargados parcialmente.

  • Atributos diferentes : en CSS, es elm.style.styleFloat en IE vs elm.style.cssFloat en Firefox. En las <label> se accede for atributo for con elm.htmlFor IE en IE vs elm.for en Firefox. Tenga en cuenta que for está reservado en IE, entonces elm[''for''] es probablemente una mejor idea para evitar que IE genere una excepción.

Lenguaje base de JavaScript:

  • Acceda a caracteres en cadenas : ''string''[0] no es compatible con IE ya que no está en las especificaciones de JavaScript originales. Use ''string''.charAt(0) o ''string''.split('''')[0] y ''string''.split('''')[0] que acceder a elementos en matrices es significativamente más rápido que usar charAt con cadenas en IE (aunque hay una sobrecarga inicial cuando se llama por primera vez a la split . )

  • Comas antes del final de los objetos: por ejemplo {''foo'': ''bar'',} no están permitidos en IE.

Elementos específicos del elemento:

  • Obtener el document de un IFrame :

    • Firefox e IE8 +: IFrame.contentDocument (IE comenzó a admitir esto desde la versión 8 ).
    • IE: IFrame.contentWindow.document
    • ( IFrame.contentWindow refiere a la window en ambos navegadores).
  • Lienzo: las versiones de IE antes de IE9 no admiten el elemento <canvas> . Sin embargo, IE admite VML que es una tecnología similar, y explorercanvas puede proporcionar un contenedor en contexto para elementos <canvas> para muchas operaciones. Tenga en cuenta que IE8 en el modo de cumplimiento de normas es mucho más lento y tiene muchas más fallas técnicas que cuando está en modo peculiar cuando usa VML.

  • SVG: IE9 es compatible con SVG de forma nativa. IE6-8 puede soportar SVG, pero solo con complementos externos con solo algunos de esos complementos que soportan la manipulación de JavaScript.

  • <audio> y <video> : solo son compatibles con IE9.

  • Creación dinámica de botones de opción : IE <8 tiene un error que hace que los botones de opción creados con document.createElement verificables. Consulte también ¿Cómo crea dinámicamente un botón de opción en Javascript que funciona en todos los navegadores? para una forma de evitar esto.

  • JavaScript incrustado en las etiquetas <a href> y conflictos anteriores a la onbeforeunload en IE: si hay JavaScript incrustado en la parte href de a etiqueta a (por ejemplo, <a href="javascript: doStuff()"> entonces IE siempre mostrará el mensaje devuelto desde onbeforeunload a menos que el controlador onbeforeunload se elimine de antemano. Consulte también Solicitar confirmación al cerrar una pestaña .

  • <script> diferencias de evento de etiqueta: onsuccess y onerror no son compatibles con IE y se reemplazan por un onreadystatechange específico de onreadystatechange que se onreadystatechange independientemente de si la descarga se realizó onreadystatechange o no. Ver también JavaScript Madness para más información.

Tamaño del elemento / posición / desplazamiento y posición del mouse:

  • Obtener tamaño / posición del elemento: el ancho / alto de los elementos a veces es elm.style.pixelHeight/Width en IE en lugar de elm.offsetHeight/Width , pero ninguno es confiable en IE, especialmente en el modo peculiar, y a veces uno da un resultado mejor que el otro.

    elm.offsetTop y elm.offsetLeft menudo se informan incorrectamente, lo que lleva a encontrar posiciones de elementos incorrectos, por lo que los elementos emergentes, etc., están a unos pocos píxeles de distancia en muchos casos.

    También tenga en cuenta que si un elemento (o uno de los elementos del elemento) tiene una display de none , IE lanzará una excepción al acceder a los atributos de tamaño / posición en lugar de devolver 0 como lo hace Firefox.

  • Obtener el tamaño de la pantalla (Obtener el área visible de la pantalla):

    • Firefox: window.innerWidth/innerHeight
    • Modo de estándares IE: document.documentElement.clientWidth/clientHeight
    • Modo peculiar de IE: document.body.clientWidth/clientHeight
  • Posición de desplazamiento del documento / posición del mouse : Este no está definido por el w3c, por lo que no es estándar incluso en Firefox. Para encontrar el scrollLeft / scrollTop del document :

    • Firefox y IE en modo peculiar: document.body.scrollLeft/scrollTop
    • IE en modo estándar: document.documentElement.scrollLeft/scrollTop
    • NOTA: Algunos otros navegadores también usan pageXOffset / pageYOffset .

      function getDocScrollPos() { var x = document.body.scrollLeft || document.documentElement.scrollLeft || window.pageXOffset || 0, y = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset || 0; return [x, y]; };

    Para obtener la posición del cursor del mouse, evt.clientX y evt.clientY en los eventos del mousemove darán la posición relativa al documento sin agregar la posición de desplazamiento, por lo que la función previa deberá incorporarse:

    var mousepos = [0, 0]; document.onmousemove = function(evt) { evt = evt || window.event; if (typeof evt.pageX != ''undefined'') { // Firefox support mousepos = [evt.pageX, evt.pageY]; } else { // IE support var scrollpos = getDocScrollPos(); mousepos = [evt.clientX+scrollpos[0], evt.clientY+scrollpos[1]]; }; };

Selecciones / rangos:

  • <textarea> y <input> selections : selectionStart y selectionEnd no están implementados en IE, y hay un sistema patentado de "rangos" en su lugar, ver también la posición de Caret en textarea, en caracteres desde el inicio .

  • Obtener el texto seleccionado actualmente en el documento:

    • Firefox: window.getSelection().toString()
    • IE: document.selection.createRange().text

Obtener elementos por ID:

  • document.getElementById también puede hacer referencia al atributo de name en los formularios (dependiendo de cuál se defina primero en el documento), por lo que es mejor no tener diferentes elementos que tengan el mismo name e id . Esto se remonta a los días en que la id no era un estándar w3c. document.all ( una propiedad específica de IE ) es significativamente más rápido que document.getElementById , pero tiene otros problemas, ya que siempre da prioridad al name antes de la id . Yo personalmente uso este código, retrocediendo con controles adicionales solo para estar seguro:

    function getById(id) { var e; if (document.all) { e = document.all[id]; if (e && e.tagName && e.id === id) { return e; }; }; e = document.getElementById(id); if (e && e.id === id) { return e; } else if (!e) { return null; } else { throw ''Element found by "name" instead of "id": '' + id; }; };

Problemas con solo lectura innerHTML:

  • IE no admite la configuración de los elementos innerHTML de col , colGroup , frameSet , html , head , style , table , tBody , tFoot , tHead , title y tr . Aquí hay una función que funciona alrededor de eso para los elementos relacionados con la tabla:

    function setHTML(elm, html) { // Try innerHTML first try { elm.innerHTML = html; } catch (exc) { function getElm(html) { // Create a new element and return the first child var e = document.createElement(''div''); e.innerHTML = html; return e.firstChild; }; function replace(elms) { // Remove the old elements from ''elm'' while (elm.children.length) { elm.removeChild(elm.firstChild); } // Add the new elements from ''elms'' to ''elm'' for (var x=0; x<elms.children.length; x++) { elm.appendChild(elms.children[x]); }; }; // IE 6-8 don''t support setting innerHTML for // TABLE, TBODY, TFOOT, THEAD, and TR directly var tn = elm.tagName.toLowerCase(); if (tn === ''table'') { replace(getElm(''<table>'' + html + ''</table>'')); } else if ([''tbody'', ''tfoot'', ''thead''].indexOf(tn) != -1) { replace(getElm(''<table><tbody>'' + html + ''</tbody></table>'').firstChild); } else if (tn === ''tr'') { replace(getElm(''<table><tbody><tr>'' + html + ''</tr></tbody></table>'').firstChild.firstChild); } else { throw exc; }; }; };

    También tenga en cuenta que IE requiere agregar un <tbody> a una <table> antes de agregar <tr> s a ese elemento <tbody> al crear usando document.createElement , por ejemplo:

    var table = document.createElement(''table''); var tbody = document.createElement(''tbody''); var tr = document.createElement(''tr''); var td = document.createElement(''td''); table.appendChild(tbody); tbody.appendChild(tr); tr.appendChild(td); // and so on

Diferencias de evento:

  • Obtener la variable de event : los eventos DOM no se pasan a las funciones en IE y se puede acceder a ellos como window.event . Una forma común de obtener el evento es usar, por ejemplo
    elm.onmouseover = function(evt) {evt = evt||window.event}
    que por defecto es window.event si evt no está definido.

  • Diferencias clave en el código de evento: los códigos de evento clave varían enormemente, aunque si Quirksmode o JavaScript Madness , no es específico de IE, Safari y Opera son diferentes nuevamente.

  • Diferencias en los eventos del mouse: el atributo del button en IE es un indicador de bits que permite múltiples botones del mouse a la vez:

    • Izquierda: 1 ( var isLeft = evt.button & 1 )
    • Derecha: 2 ( var isRight = evt.button & 2 )
    • Centro: 4 ( var isCenter = evt.button & 4 )

      El modelo W3C (compatible con Firefox) es menos flexible que el modelo IE, con solo un botón permitido a la vez, con el izquierdo como 0 , el derecho como 2 y el centro como 1 . Tenga en cuenta que, como menciona Peter-Paul Koch, esto es muy contrario a la intuición, ya que 0 generalmente significa ''sin botón''.

      offsetX y offsetY son problematic y probablemente sea mejor evitarlos en IE. Una forma más confiable de obtener offsetX y offsetY en IE sería obtener la posición del elemento relativamente posicionado y restarlo del clientX y del clientY .

      También tenga en cuenta que en IE para obtener un doble clic en un evento de click , debe registrar tanto un click como dblclick evento dblclick para una función. Firefox dispara al igual que dblclick doble clic al hacer doble clic, por lo que se necesita detección específica de IE para tener el mismo comportamiento.

  • Diferencias en el modelo de manejo de eventos: tanto el modelo propietario de IE como el modelo de Firefox soportan el manejo de eventos de abajo hacia arriba, por ejemplo, si hay eventos en ambos elementos de <div><span></span></div> luego eventos se activará en el span luego el div lugar del orden al que están vinculados si se elm.onclick = function(evt) {} tradicional, por ejemplo, elm.onclick = function(evt) {} .

    Por lo general, los eventos de "captura" solo se admiten en Firefox, lo que activará el div luego los eventos span en un orden descendente. IE tiene elm.setCapture() y elm.releaseCapture() para redirigir los eventos del mouse desde el documento al elemento ( elm en este caso) antes de procesar otros eventos, pero tienen una cantidad de rendimiento y otros problemas, por lo que probablemente deberían evitarse.

    • Firefox:

      Adjuntar : elm.addEventListener(type, listener, useCapture [true/false])
      Separar : elm.removeEventListener(type, listener, useCapture)
      ( type es, por ejemplo, ''mouseover'' sin el on )

    • IE: solo un evento individual de un tipo dado en un elemento se puede agregar en IE: se genera una excepción si se agrega más de un evento del mismo tipo. También tenga en cuenta que this refiere a la window lugar de al elemento vinculado en las funciones de eventos (por lo que es menos útil):

      Adjuntar : elm.attachEvent(sEvent, fpNotify)
      Separar : elm.detachEvent(sEvent, fpNotify)
      ( sEvent es, por ejemplo, ''onmouseover'' )

  • Diferencias de atributo de evento:

    • Detener eventos para que no sean procesados ​​por ninguna otra función de escucha :

      Firefox: evt.stopPropagation()
      IE: evt.cancelBubble = true

    • Deje, por ejemplo, que los eventos clave no inserten caracteres o dejen de marcarse las casillas de verificación:

      Firefox: evt.preventDefault()
      IE: evt.returnValue = false
      Nota: El solo hecho de devolver el valor false en la keypress , mousedown keypress , mousedown , mouseup , click y reset también evitará el valor predeterminado.

    • Obtener el elemento que activó el evento:

      Firefox: evt.target
      IE: evt.srcElement

    • Obteniendo el elemento del que se movió el cursor del mouse desde: evt.fromElement en IE es evt.target en Firefox si está en un evento onmouseout , de lo contrario evt.relatedTarget

    • Obteniendo el elemento al que se movió el cursor del mouse: evt.toElement en IE está evt.relatedTarget en Firefox si está en un evento onmouseout , de lo contrario evt.target

    • Nota: evt.currentTarget (el elemento al que se vinculó el evento) no tiene equivalente en IE.


Por lo que vale, acabo de enterarme de este desagradable problema en <IE9

di que tienes algunos html como este:

<table><tr><td>some content...</td></tr></table>

y por alguna razón (tuve uno bueno) necesita recuperar todo el código HTML en la tabla antes del último cierre TR podría intentar algo como esto:

var tableHtml = document.getElementById(''thetable'').innerHTML; var fragment = tableHtml.substring(0, tableHtml.lastIndexOf(''</tr>''));

<IE9 no devolverá nada (-1) aquí porque la variable tableHtml contiene todas las etiquetas html upper-cased y lastIndexOf distingue entre mayúsculas y minúsculas. Para evitar esto tuve que lanzar un toLowerCase () antes de lastIndexOf.


Si se queda con el uso de jQuery o YUI a medida que su publicación se etiqueta, debe tener diferencias mínimas entre los navegadores ... para eso están los marcos, para ocuparse de estas diferencias entre navegadores para usted.

Por ejemplo, mire la página transversal del DOM de modo peculiar , de acuerdo con ella IE no admite la mayoría de las cosas ... mientras que es cierto, los marcos sí, por ejemplo IE no admite elem.childElementCount , pero en jQuery: $(elem).children().size() funciona para obtener este valor en cada navegador. Encontrará que hay algo en la biblioteca que maneja el 99% de los casos no compatibles en todos los navegadores, al menos con script ... con CSS puede que tenga que pasar a los complementos de la biblioteca, un ejemplo común de esto es obtener esquinas redondeadas trabajando en IE ... ya que no tiene soporte CSS para tal.

Sin embargo, si comienzas a hacer cosas directamente, como document.XXX(thing) , entonces no estás en la biblioteca, estás haciendo javascript directamente (todo es javascript, pero obtienes el punto :), y esto podría o no ser causar problemas, dependiendo de qué tan borracho haya estado el equipo de IE al implementar esa función en particular.

Con IE, es más probable que falles en el diseño que salga correctamente que con problemas de JavaScript, animaciones a unos pocos píxeles y ese tipo de cosas, mucho más, por lo tanto, en IE6, por supuesto.


Verifique también si hay comas como estas o similares en su código

var o={ ''name1'':''value1'', ''name2'':''value2'', }

la última coma (siguiente valor 2) será tolerada por Firefox, pero no por IE


getElementbyID también coincidirá con el atributo de nombre en IE, pero no en otros navegadores, e IE seleccionará el que encuentre primero.

ejemplo:

<script> var foo = document.getElementById(''bar''); </script> .... <input name="bar" type="text" /> //IE will get this element <span id="bar"> Hello, World! </span> //FF,Safari,Chrome will get this element