Les platicare lo mas resumido posible. Tengo un par de scripts en PHP que me permiten darle uso a varias librerias de javascript de una manera muy sencilla. Por ejemplo, si quiero validar un formulario simplemente pongo al final del formulario:
Código :
<form id="form1"> ... <input type="text" class="v-email"> <input type="submit"> <? $html->formValidate('form1'); ?> </form>
No necesito incluir nada en el header. Esa funcion de php me imprime ( por medio de un puente en JS entre el <head> </head> usando document.getElementsByTagName("head").item(0).appendChild(FILEREF);) todos los CSS y JS que necesito y ejecuta las funciones de JS pertinentes.
Funciona perfecto en Firefox y Opera y medianamente bien en Internet Explorer, por que? porque si guiñas un ojo, das dos chisquillos con los dedos e inclinas la cabeza 12° funciona, sino da error.
Gracias a que en realidad no conozco ninguna buena herramienta para depurar JS en INTERNET EXPLORER me tomo casi 3 dias medio encontrar la causa del problema, de nuevo, les platicare.
Estos scripts en PHP de los que les hablo optimizan el codigo de los JS y CSS, (borran espacios, comentarios, saltos de linea, encriptan y comprimen en gzip) y guardan el resultado en un archivo de cache en el servidor, la primera carga de la pagina toma bastante tiempo mas de lo normal, pero esto solo pasa una vez cada que se cambian los JS. una vez que se han generado los archivos cache simplemente lee el contenido de esos archivos y lo imprime y es increiblemente rapido.
Por ejemplo, la libreria Prototype JS que pesa 92KB pasa a pesar solo 12KB.
En fin, el dia de hoy me di cuenta que Internet Explorer tiene problemas cuando los archivos cache no se han generado, es decir, en el ejemplo anterior ejecuta el codigo para iniciar el formulario ANTES de que se termine de cargar la libreria JS. Si entro a la pagina primero en firefox y luego en IE, funciona, si entro primero en IE no funciona.
Hasta ahi bien, porque pense, simplemente genero los archivos una vez en firefox y luego siempre debera funcionar en IE, pero no. funciona unos 30 mintuos en IE y luego vuelve a dar errores.
Quizas lo pueda solucionar con alguna cabezara de HTTP, pero no se bien cual. o quiza agregando un sleep en PHP para que no siga leyendo hasta que no se cargue el sleep (solucion que no me gusta), o quiza exista alguna funcion en javascript o http que me permita obligar al navegador a cargar primero un script.
Les solicito ayuda..
este es el archivo que carga los JS:
http://www.pbxa.com:8080/ioFramework/browser/project-template/phload/js/loader.js
esta es la clase que verifica si debe crear el archivo cache o no.
http://www.pbxa.com:8080/ioFramework/browser/includes/trunk/io/Html/phLoad/bridge.php
y esta es la documentacion:
http://www.pbxa.com:8080/ioFramework/wiki/PhLoad