¿Cómo puedo descargar un recurso de JavaScript con todos sus objetos definidos desde el DOM?¿Cómo descargar un javascript de un html?
Im desarrollando un marco simple que permite cargar fragmentos html en un html "principal". Cada fragmento es independiente y puede incluir referencias a archivos JS y CSS adicionales. Los recursos JS y CSS se analizan y se agregan dinámicamente al html. Cuando el fragmento se elimina/reemplaza del DOM, quiero eliminar su JS y CSS.
Si elimino el elemento script en el ejemplo a continuación, las funciones definidas en page1.js todavía están disponibles.
<html>
<head>
<script src="page1.js" type="text/javascript"></script>
</head>
<body>
...
¿Hay alguna manera de descargar objetos de page1.js del DOM?
========= El código de prueba que uso =======
Probé el consejo que me dieron en los comentarios; para eliminar los objetos agregados usando una función de limpieza, pero incluso esto falla. Las fuentes que he usado para las pruebas:
<html>
<head>
<script type="text/javascript">
function loadJSFile(){
var scriptTag = document.createElement("script");
scriptTag.setAttribute("type", "text/javascript");
scriptTag.setAttribute("src", "simple.js");
var head = document.getElementsByTagName("head")[0];
head.appendChild(scriptTag);
}
function unloadJSFile(){
delete window.foo;
delete window.cleanup;
alert("cleanedup. typeof window.foo is " + (typeof window.foo));
}
</script>
</head>
<body>
Hello JavaScript Delete
<br/>
<button onclick="loadJSFile();">Click to load JS</button>
<br/>
<button onclick="foo();">call foo()</button>
<br/>
<button onclick="unloadJSFile();">Click to unload JS</button>
</body>
</html>
simple.js fuente:
var foo = function(){
alert("hello from foo");
}
Si lo ves de manera objetiva, estás tratando de hacer lo mismo que en: http://stackoverflow.com/questions/3830133/avoiding-pollution-of-globals-via-iframe-script -loader/3882324 # 3882324. . iframes parece ser una forma bastante normal de hacer todo lo posible con respecto a la limpieza. –
@Ravindra: No puedo usar iFrames porque no sé cuál es la dimensión del fragmento, además, el fragmento necesita comunicarse con el código existente en la página. – Totach
¿Mantiene usted el recurso JS? En caso afirmativo, un poco de arquitectura en torno a la JS seguramente será de ayuda. Las respuestas a continuación por cdhowie y escurridizas serían de ayuda –