Lo del javascript no intrusivo está muy bien. De hecho, para hacer bien una página/aplicación Web, no te queda otra. Hay que hacerlo no intrusivo.
Haciédolo así es mucho más fácil de depurar, de mantener y no tienes todo mezclado en el HTML. Razones de peso, para que quieres más… Y claro, ya de estar, usa una librería como jQuery (la que yo uso y prefiero) o Prototype o alguna otra, que hay muchas.
Pero… sí, siempre hay un pero, pero hay veces que esto no sirve. Y no sirve por el rendimiento, nada tiene que ver con las razones anteriores.
Es que cuando tienes una página muy grande, digamos con una tabla de diez mil celdas (mucho dato que mostrar) y en cada celda tienes dos elementos que tienen un tooltip para no recargar de tanto dato (aunque con diez mil celdas ya sobran, vamos), según termina de cargar el documento, el javascript no intrusivo se tiene que recorrer todo el DOM (de nuevo) y asignar a cada elemento que corresponda el tooltip.
Por cierto, el tooltip que uso es jQuery Tooltip.
Esto de asignar eventos tarda mucho. Pero que mucho. No sé cuanto tiempo es el tiempo máximo de ejecución de un script de javascript en Firefox 2, pero tenía que darle tres veces (a veces más) al famoso botón «Continuar» la ejecución del script para que me mostrara todo.
Aquí es donde entra el javascript intrusivo. Después de quitar la asignación de los tooltip, a toda la generación del HTML que lo necesita (lo hago en PHP), le añado javascript en línea en los eventos onmousemove y onmouseout. Manualmente muestro u oculto un tooltip personalizado.
Y esto sí que va rápido. Ahora ni siquiera aparece el mensaje de «Detener script». Simplemente tarda un poco pero lo carga todo sin problemas.
La conclusión: usa javascript no intrusivo. Si por un casual va demasiado lento, revísalo. Y si por un casual sigue yendo demasiado lento, puedes usar javascript en línea. Pero que nadie te vea.






Ummmmmm. Yo tengo ahí una duda. Las funciones onmouseXX ya son de javascript, y supongo que, pongas lo que pongas, si un navegador no maneja javascript, esas funciones no las interpretará. Con esto quiero decir que aunque uses esas funciones, tu javascript no será intrusivo mientras la funcionalidad principal exista sin javascript… ¿no?
En realidad es intrusivo porque de lo que se trata es de separar todos los códigos de generación de las webs, es decir, separar PHP/Java/… del HTML del CSS y del Javascript. Cada uno en su sitio.