2012-02-20 29 views
9

Tengo archivos javascript externos que se cargan en mi página maestra.¿Por qué Javascript algunas veces no se carga en IE8?

A veces en IE8 mis archivos javascript no se cargan correctamente y el navegador arroja un montón de errores diciendo que el objeto no es reconocido.

Si actualizo la página, todo está bien. Si hago clic en un enlace, a veces el problema vuelve a ocurrir.

Tengo etiquetas meta en mi encabezado para borrar la caché en cada solicitud.

También estoy usando head.load para cargar mis archivos js en paralelo.

El script head.load está en mi encabezado y los archivos externos están al final de mi cuerpo.

Recuerde que este problema solo ocurre en IE8. Entonces mi pregunta es ... ¿hay algún truco que pueda usar para asegurarme de que mis archivos javascript se carguen correctamente cada vez que la página se carga para IE8?

Cualquier ayuda sería muy apreciada.

Actualizado conforme a lo solicitado

<head runat="server"> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
    <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
    <meta http-equiv="EXPIRES" content="-1" /> 

    <script type="text/javascript" src="scripts/js/head.load.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
    head.js("scripts/js/jquery-1.6.2.min.js"); 
     head.js("scripts/js/jquery.cookie.js"); 
    head.js("lib/gritter/jquery.gritter.min.js"); 
    head.js("lib/fancybox/jquery.easing-1.3.pack.js"); 
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js"); 
    head.js("scripts/js/jquery.microaccordion.js"); 
    head.js("scripts/js/jquery.stickyPanel.js"); 
    head.js("scripts/js/guidely.js"); 
    head.js("scripts/js/pto.js"); 
</script> 
</body> 
+0

Probablemente necesite citar el código 'head.load'. –

+0

'arroja un montón de errores diciendo que la especificidad del objeto no reconocido ayudaría. – Shad

+0

@damaniel, dices que este código solo falla en IE8. ¿En qué otros navegadores lo probó? ¿Has probado un IE8 en otra máquina? ¿Puedes reproducir el problema en modo seguro (opción de línea de comando '-extoff')? –

Respuesta

2

Ok los problemas parece ser la forma en el archivo de carga head.load mis cosas externas en IE8. Si cargo jquery antes de cargar mi archivo head.load y luego cargo mis externos en paralelo al final de la página, entonces no hay errores en la página.

Esto definitivamente es una solución, pero me gustaría que incluso jquery pueda cargarse en la cabeza sin errores de javascript en IE. Estoy seguro de que esto no será un error en las últimas versiones.

Gracias a todos por la entrada.

@ frederic - Trabajo en una empresa que tiene 188,000 empleados. Si tienen un complemento instalado en su navegador que está causando el colapso de mi página, entonces no hay nada que pueda hacer al respecto. Tampoco creo que este problema esté causado por ningún complemento. Creo que es solo cómo se maneja head.load en IE8.

@Shard - No creo que entiendas lo que estaba preguntando y si ese es el caso, entonces lo siento por no ser más claro. De todos modos, encontré una solución, así que gracias por tu aporte.

<head runat="server"> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
    <meta http-equiv="PRAGMA" content="NO-CACHE" /> 
    <meta http-equiv="EXPIRES" content="-1" /> 
    <script type="text/javascript" src="scripts/js/jquery.min.js"></script> 
    <script type="text/javascript" src="scripts/js/head.load.min.js"></script> 
</head> 

<script type="text/javascript"> 
    head.js("scripts/js/jquery.cookie.js"); 
    head.js("lib/gritter/jquery.gritter.min.js"); 
    head.js("lib/fancybox/jquery.easing-1.3.pack.js"); 
    head.js("lib/fancybox/jquery.fancybox-1.3.4.pack.js"); 
    head.js("scripts/js/jquery.microaccordion.js"); 
    head.js("scripts/js/jquery.stickyPanel.js"); 
    head.js("scripts/js/guidely.js"); 
    head.js("scripts/js/pto.js"); 
</script> 
+1

Hola, no quiero ser grosero, pero tu respuesta puede ayudarte con tu problema en particular, pero en realidad no está resolviendo el problema general en los deps con headjs, considera leer mi respuesta y tal vez poner un comentario en la tuya. –

0

nuestra página http://headjs.com/ en la sección Uso verá exactamente lo que está mal con su código:

// archivos se cargan en paralelo y ejecutados con el fin de que lleguen head.js (" file1.js "); head.js ("archivo2.js"); head.js ("archivo3.js");

Las secuencias de comandos se han de carga en paralelo y se ejecutan en el tiempo de llegada, que es bastante malo para los deps en jQuery, si desea que se ejecutan en orden usar esto:

head.js("scripts/js/jquery-1.6.2.min.js", 
     "scripts/js/jquery.cookie.js", 
     "lib/gritter/jquery.gritter.min.js"), 
     "lib/fancybox/jquery.easing-1.3.pack.js", 
     "lib/fancybox/jquery.fancybox-1.3.4.pack.js", 
     "scripts/js/jquery.microaccordion.js", 
     "scripts/js/jquery.stickyPanel.js", 
     "scripts/js/guidely.js", 
     "scripts/js/pto.js"); 

es necesario llamar js con una lista de recursos para cargar, no solo llame a js varias veces.

+0

La documentación de la que hablas no estaba disponible hace un año cuando encontré este problema y estoy bastante seguro de que cargar archivos externos delimitados por comas tampoco era una característica de headjs ... pero es genial que puedas hacer eso ahora ... gracias por la entrada – damaniel

Cuestiones relacionadas