como dice el título, si quito una etiqueta de secuencia de comandos desde el DOM usando:¿jQuery .remove() borra el javascript cargado cuando se usa para eliminar una etiqueta de script?
$('#scriptid').remove();
¿Tiene el Javascript en sí permanecen en la memoria o se trata de limpiar?
O ... ¿no entiendo por completo la forma en que los navegadores tratan javascript? Lo cual es bastante posible.
Para aquellos interesados en mi razón de hacer ver a continuación:
estoy moviendo algunas interacciones de JavaScript comunes de archivos de script estático en generadas dinámicamente los de PHP. Que se cargan a pedido cuando un usuario los requiere.
La razón para hacer esto es mover la lógica del servidor y ejecutar un pequeño script, devuelto desde el servidor, al lado del cliente. En lugar de tener una secuencia de comandos grande que contiene una gran cantidad de lógica, lado del cliente.
Este es un enfoque similar a lo que hace facebook ...
Facebook talks frontend javascript
Si echamos un diálogo sencillo, por ejemplo. En lugar de generar el html en javascript, adjuntarlo al dom, y luego usar el widget de diálogo de jqueryUI para cargarlo, ahora estoy haciendo lo siguiente.
- petición Ajax se hace a dialog.php
- Server genera HTML y JavaScript que es específica para este cuadro de diálogo a continuación, los codifica como JSON
- JSON se devuelve al cliente.
- El código HTML se agrega al
<body>
y una vez que se muestra, el javascript también se agrega al DOM.
El javascript se ejecuta automáticamente al insertarlo y se abre el diálogo dinámico.
Hacer esto ha reducido drásticamente la cantidad de javasript en mi página, sin embargo, me preocupa la limpieza del javascript insertado.
Obviamente una vez que el cuadro de diálogo se ha cerrado se elimina de la DOM utilizando jQuery:
$('#dialog').remove();
El javascript se añade con un ID y también eliminar esto desde el DOM a través del mismo método.
Sin embargo, como se mencionó anteriormente, ¿con jQuery's .remove() en realidad se borra el javascript de la memoria o simplemente se elimina el elemento <script>
del DOM?
Si es así, ¿hay alguna forma de solucionar esto?
Si usted está preocupado por la cantidad de JS para crear un cuadro de diálogo , podrías mirar a EJS. Esto le permitirá crear plantillas HTML desde JS. – westo
Gracias westo, yo uso JsRender para plantillas del lado del cliente. sin embargo, el enfoque que he mencionado anteriormente no es solo para diálogos, es para muchas otras interacciones donde las plantillas no son adecuadas. Tal vez el ejemplo de diálogo no fue bueno. – gordyr