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

far21688504 far21688504 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如题, 我以以下代码动态添加了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引用...
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
far21688504
JavaScript 87,984 成员 224,681 内容