![](/img/trans.png)
[英]How can I load and unload(remove) css and javascript imports/files on will?
[英]How can I dynamically unload a javascript file?
我包括使用 Ajax 的页面,但我还需要包括它们各自的 javascript 文件,这需要同时从内存中删除以前的 javascript 文件。
如何卸载当前加载的 javascript 文件(以及它们在内存中的代码),以便加载新页面的文件? 它们很可能会发生冲突,因此加载了多个独立文件的 javascript 文件。
听起来确实像您需要重新评估设计。 您需要删除Ajax,或者方法名称中不需要冲突。
您可以查看以下链接: http : //www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml
其中提供了有关如何从DOM中删除JavaScript的信息。 但是,现代浏览器会将代码保留在浏览器的内存中。
不,你不能那样做。 一旦将JavaScript块加载到浏览器中并执行后,它就会存储在相应窗口范围内的浏览器内存中。 绝对没有办法卸载它(没有页面刷新/窗口关闭)。
您可以只为代码命名空间..这样可以防止冲突
var MyJavaScriptCode = {};
MyJavaScriptCode.bla = function(){};
其实那是完全可能的。 您可以替换脚本或链接元素。
function createjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
return fileref
}
function replacejscssfile(oldfilename, newfilename, filetype){
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist using
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
var allsuspects=document.getElementsByTagName(targetelement)
for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){
var newelement=createjscssfile(newfilename, filetype)
allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
}
}
}
您必须将文件名参数填充为src属性,并将文件类型填充为“ js”或“ css”
我认为没有必要解释代码。 您还发布了2009年,但嘿。 也许有人会需要它吗? :)
所有功劳归功于: http : //www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml
您可以在那里学习一些技巧。
可以卸载JavaScript文件,从浏览器中清除整个代码。 这些步骤是:
例
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
而已
正是我和我尝试过的类似要求,但它甚至需要来自开发人员的一小部分编码部分。
我有一个包含 20 多个函数的 js 文件,如下所示,文件名为 profile.js
function myprofile(){
//code block A
}
function updateprofile(){
//code block B
}....
var functionsInJs=["myprofile","updateprofile",...]
现在我写了一个方法来清除这个文件的内存如下
function unloadJs(array){
array.forEach(function(eachJsFn){
window[eachJsFn]=undefined;//Clearing the functionality of js function in browsers window
}
}
因此,在卸载 js 函数时,我将在其中传递函数名称数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.