如何动态卸载javascript文件?

Jac*_*kie 27 javascript

我使用Ajax包含页面,但我还需要包含各自的javascript文件,这需要同时从内存中删除以前的javascript文件.

如何卸载当前加载的javascript文件(以及它们在内存中的代码),以便我可以加载新页面的文件?它们很可能会发生冲突,因此加载了多个独立文件的javascript文件.

Not*_*tMe 12

这听起来像你需要重新评估你的设计.您需要删除ajax,或者您不需要在方法名称中发生冲突.

您可以查看以下链接:http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml

其中提供了有关如何从DOM中删除javascript的信息.但是,现代浏览器会将代码留在浏览器的内存中.

  • Facebook使用相同的方法并保持代码清洁,所以他们不会混淆.一个适当的面向对象的代码会做得很好,所以没有冲突. (2认同)

小智 8

不,你做不到.一旦JavaScript块被加载到浏览器中并执行,它就会被存储在相应窗口范围内的浏览器内存中.绝对没有办法卸载它(没有页面刷新/窗口关闭).


Orl*_*ndo 7

您可以命名您的代码.这样可以防止冲突

var MyJavaScriptCode = {};

MyJavaScriptCode.bla = function(){};


Sta*_*vil 5

可以卸载 javaScript 文件,从浏览器中清除整个代码。步骤是:

  1. 给目标“ script ”元素一个ID(例如“ mainJs ”,指向“ main.js ”)
  2. 创建另一个JS文件(例如“ flush.js ”),与“ main.js ”中的函数和变量相同,并确保函数和变量内容为空。
  3. main.js ”用完后,我们通过删除“ script#mainJs ”元素并将“ lush.js ”动态加载到 DOM 树中来刷新它。

例子

mainJs    = document.getElementById("mainJs");
document.head.removeChild(mainJS);//Remooves main.js from the DOM tree

flushFile = document.createElement("script");
flushFile.setAttribute("src", "flush.js");
document.head.appendChild(flushFile);//Loads flush.js into the DOM tree, overwriting all functions and variables of main.js in browser memory to null
Run Code Online (Sandbox Code Playgroud)

就是这样