2009-03-24 13 views
12

En lo que parece ser ocurrencias aleatorias, los archivos de javascript no se están cargando.¿Por qué mis archivos javascript no se cargan 'consistentemente' en IE7?

Creo que este diagnóstico es correcto porque a) Tengo un código para verificar, b) He pasado por el código, yc) Obtengo el error '' myfunction 'undefined "cuando se usan las funciones en esos archivos.

A veces esto no ocurre durante una hora, a veces sucede cada vez que cargo la página, a veces sucede cada dos veces que cargo la página. Parece que cada vez que identifico un comportamiento consistente para poder repetirlo y diagnosticarlo, ¡cambia!

¿Alguien tiene alguna idea de lo que podría estar causando esto?

que estoy usando:

  • versión 7.0.5730.11 IE (habían & desinstalado IE8 Beta)
  • VS2008

En este momento, parece que sólo se pasa a mi colega y yo en nuestros entornos de desarrollo.

Hay una secuencia de comandos que parece faltar más que cualquier otra. Aquí está la etiqueta del script.

<script language="javascript" 
     type="text/javascript" 
     src="js/Ajax.Utility.js?<%= ConfigurationManager.AppSettings["WebApp.JavaScript.FileVersion"].ToString() %>"></script> 

que evalúa a

<script language="javascript" 
     type="text/javascript" 
     src="js/Ajax.Utility.js?090324a"></script> 

El parámetro de cadena de consulta versión no parece tener ningún efecto, ya sea desde que ambos tenían y no tenían el problema inmediatamente después de cambiarlo.

+0

¿No está cargando o está llamando a la función javascript antes de que la página se haya cargado por completo? En otras palabras, ¿qué estás usando para activar la llamada ** myfunction **? – Keltex

+0

@ Keltex: la función que falta se está llamando más adelante en la aplicación. Y el código que dije que estaba revisando es declaraciones variables y otro código simple como ese. –

+0

Un par de preguntas más: ¿Has intentado desactivar la depuración de scripts? ¿Estás usando IIS o el servidor web incorporado? – Keltex

Respuesta

3

Solo un FYI para cualquier persona que tenga el mismo problema.

Esto nunca se resolvió, pero ahora creo que tenía algo que ver con Visual Studio Development Server, y me pregunto si esto hubiera sucedido si hubiera estado usando IIS. Desafortunadamente, ya no trabajo en ese proyecto, así que no puedo probarlo.

1

Otra idea: ¿Estás vaciando la memoria caché del navegador entre las pruebas? Un navegador es perfectamente en libertad de secuencias de comandos de caché como lo considere oportuno, a menos impedido de hacerlo - que normalmente sólo se ha notado si la edición de scripts y hojas de estilo e imágenes

+0

Antes de poner el parámetro de versión de archivo en la cadena de consulta, lo estaba haciendo religiosamente, pero desde entonces me he aflojado. Comenzaré a hacer eso de nuevo, pero estoy bastante seguro de que esto estaba sucediendo cuando borraba el caché regularmente. –

2

En lugar de src = "js/AjaxTry.Utility.js" tratan este

src="<% ResolveUrl("~/path/from/root/to/js/Ajax.Utility.js") %> 
+0

Gracias, sé de dónde vienes, pero no es una cuestión de no encontrar el archivo js, ​​ya que a veces está allí ... en realidad usualmente está ahí. –

1

Ha comprobado con una herramienta como Fiddler que se está realizando la llamada para ese archivo .js que el servidor o en la memoria caché del navegador, y que el navegador está recibiendo realmente el archivo correctamente, y no conseguir un 404 o algo así?

Debería verificar esto en la página que está llamando al método en cuestión - como su ruta es una url relativa (es decir, no comienza con "/"), ¿hay alguna posibilidad de que la página la llame? desde no está debajo de la carpeta js pero quizás al lado?

Imagine un sitio como este, la estructura de la raíz del sitio:

/page1.aspx 
/folder/page2.aspx 
/js/Ajax.Utility.js 

Si tanto page1 y page2 tener su llamada al.js archivo, sólo page1 en realidad será capaz de utilizar recuperar correctamente - page2 será efectiva estar buscando:

/folder/js/Ajax.Utility.js 
+0

@Zhaph - Ben Duguid: dado que el problema solo se produce ocasionalmente, no puede ser un problema de ruta. Pero la idea del violinista es una buena idea para aislar si el problema es el servidor web de IE. +1 –

4

Sólo en caso de las respuestas dadas no han funcionado -

IE7 por defecto no se carga Javascript de archivos locales. Por lo general, obtendrá la barra de información bajando e indicando eso. Tienes que hacer clic en la barra y seleccionar "Permitir contenido bloqueado" y luego IE7 volverá a cargar la página con Javascript habilitado.

Este comportamiento es coherente. Sin embargo, si algunos sistemas desactivan la visualización de la Barra de información, ahora hay una forma de que pueda saber cuál es el problema.

Mi sugerencia es agregar una etiqueta < noscript> en la parte superior de su página HTML y estilizarla con un fondo rojo en negrita usando CSS para que no pueda perderla. StackOverflow usa esta técnica.

De esta manera seguramente sabrá si Javascript no se está cargando debido a razones de seguridad.

+0

@ globetrotter-Gracias, suena como una buena técnica. Sin embargo, tengo un montón de scripts, y todos los demás se cargan bien. Incluso este carga bien, el 60% del tiempo. Pero por alguna razón no puedo fantasear, ocasionalmente no se carga. ??? :-( –

+0

Tuve este problema (el script no se cargó en MSIE7, pero se cargó en MSIE9 y Firefox). Esto fue causado por la configuración de seguridad de MSIE7. La etiqueta

5

He tenido este problema dos veces antes. Siempre es un error de sintaxis en el código Javascript. Probablemente sea un soporte adicional o uno faltante. Todos los otros navegadores lo dejan pasar pero IE7 no.

Prueba y error (eliminación de trozos y trozos de código) me llevó a encontrar la solución.

Espero que esto ayude :-)

+0

Gracias por la información, pero no lo hago. Creo que este era el problema. Como dije en la pregunta, a veces se descarga, a veces no funciona. Cuando se carga, el script está bien. Pero gracias de nuevo. –

+0

Acabo de tener el mismo problema. El navegador no lo haría. reconocer el código pero tampoco arrojar ningún error. La etiqueta del script era correcta, el código se cargaba cuando veía source y seguía el enlace al archivo include. Resulta que tenía un problema de sintaxis. – misteraidan

+0

Me alegra oír eso!: -) – Abdo

3

tuve el mismo problema exacto como el cartel original y había intentado muchas de las soluciones previstas en vano.

Finalmente lo solucioné actualizando la fecha y la hora en la máquina que ejecuta el servidor apache. Estuvo apagado un par de días (resultado de ejecución intermitente en una VM)

Espero que esto ayude a alguien.

1

Tuve el mismo problema con IE7, el problema fue que utilicé 'super' como propiedad que es una palabra clave reservada e IE7 silenciosamente no cargó la página.

Cuestiones relacionadas