移除动态引用的js文件, 并使移除的js文件里面声明的变量变成未声明

far21688504 2017-01-11 11:40:08
如题, 我以以下代码动态添加了js文件

if($.includeMap[file] != null){
// 文件已经加载了;
return ;
}
$.includeMap[file] = 1;
var files = typeof file == "string" ? [file] : file;
for (var i = 0; i < files.length; i++) {
var name = files[i].replace(/^\s|\s$/g, "");
var att = name.split('.');
var ext = att[att.length - 1].toLowerCase();
var isCSS = ext == "css";
var tag = isCSS ? "link" : "script";
var attr = isCSS ? " type='text/css' rel='stylesheet' " : " type='text/javascript' ";
var link = (isCSS ? "href" : "src") + "='" + name + "'";
if ($(tag + "[" + link + "]").length == 0) $("head").append("<" + tag + attr + link +"></" + tag + ">");
}

移除用的以下代码

for(var obj in $.includeMap) {
if(obj != "js/lang/" + $.language + ".js") {
var files = typeof obj == "string" ? [obj] : obj;
for (var i = 0; i < files.length; i++) {
var name = files[i].replace(/^\s|\s$/g, "");
var att = name.split('.');
var ext = att[att.length - 1].toLowerCase();
var isCSS = ext == "css";
var tag = isCSS ? "link" : "script";
var link = (isCSS ? "href" : "src") + "='" + name + "'";
if ($(tag + "[" + link + "]").length != 0) {
$(tag + "[" + link + "]").remove();
delete $.includeMap[obj];
}
}
}
}


虽然html代码里面js引用确实被删除了, 但是实际上这个js文件并没有被移除, 在被移除的js文件里面声明的全局变量还是可以使用


到底是我的移除js文件有问题还是说需要另外去删除js引用...
...全文
393 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
far21688504 2017-01-11
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
删除dom标签没用,代码和css之类已经在内存中了,删除不了。。 js你知道全局变量名或者函数可以直接复制为null之类的
就是不知道变量名
Go 旅城通票 2017-01-11
  • 打赏
  • 举报
回复
删除dom标签没用,代码和css之类已经在内存中了,删除不了。。 js你知道全局变量名或者函数可以直接复制为null之类的

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧