2010-03-08 18 views
6

Tengo un número de scripts de seguimiento y servicios web instalados en mi sitio web y me di cuenta de que cuando uno de los servicios falla, sigue intentando llamar al archivo javascript externo alojado en un servidor diferente. En Firefox, Chrome y otros navegadores nuevos, no parece haber problemas cuando uno de los servicios falla. Sin embargo, en IE7 e IE8, mis páginas no se cargan completamente y se agota el tiempo de espera antes de que se muestre todo. ¿Hay alguna manera de agregar un tiempo de espera en estas llamadas javascript para evitar que rompan mis páginas cuando bajan?Tiempo de espera externo de Javascript

Respuesta

5

que es posible cargar dinámicamente después de carga de la página con JS. Si los archivos JS están en un servidor diferente, el navegador mostrará un indicador de "navegador ocupado" cuando lo haga, pero la página original se cargará.

Si se puede recuperar la JS de su propio sitio, puede cargarlo con XMLHttpRequest después de carga de la página (o con los ayudantes de su biblioteca favorita JS, por ejemplo jQuery de $.ajax(...)) y luego se eval. De esta forma, la búsqueda no mostrará el indicador ocupado por el navegador.

Para buscar el JS desde su propio sitio, puede descargarlo de su proveedor de seguimiento (que no será compatible oficialmente pero por lo general funciona); simplemente recuerde volver a buscar las versiones nuevas de vez en cuando o puede crear un servicio de "reenvío" en su propio sitio que lo obtiene del proveedor de seguimiento y lo almacena en caché localmente por un tiempo. De esta forma, su JS no estará en peligro de estancamiento.

Steve Souders tiene más información sobre deferred loading of scripts and browser-busy indicators.

+0

1 que es un buen enlace. –

2

Trate de añadir defer="defer"

El atributo Defer da una pista a al navegador que el guión no crear contenido para que el navegador puede diferir opcionalmente interpretar el guión . Esto puede mejorar el rendimiento al retrasar la ejecución de scripts hasta una vez que se haya analizado el contenido del cuerpo y se haya procesado .

Editar
Esto evitará que los guiones se ejecute hasta que se carga la página:

function loadjs(filename) { 
    var fileref=document.createElement('script'); 
    fileref.setAttribute("type","text/javascript"); 
    fileref.setAttribute("src", filename); 
} 

window.onLoad = function() { 
    loadJs("http://path.to.js"); 
    loadJs("http://path.to2.js"); 
    ... 
} 
+0

No soportado en todos los navegadores :( – orip

+0

Yah No creo que funcione. Creo que el verdadero problema es que IE intenta conectarse al archivo JS externo y el tiempo de espera predeterminado es demasiado alto. Donde como Firefox y otros navegadores parece saber rápidamente que el archivo no está respondiendo y seguir adelante en consecuencia. Me pregunto si hay alguna manera de evitarlo .... – mike

+0

Bueno, podría cargar archivos javascript externos, javascript, no html. Ponga el código de carga en una '