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

时间:2022-12-12 16:35:13
如题, 我以以下代码动态添加了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 个解决方案

#1


删除dom标签没用,代码和css之类已经在内存中了,删除不了。。

js你知道全局变量名或者函数可以直接复制为null之类的

#2


引用 1 楼 showbo 的回复:
删除dom标签没用,代码和css之类已经在内存中了,删除不了。。

js你知道全局变量名或者函数可以直接复制为null之类的



就是不知道变量名

#1


删除dom标签没用,代码和css之类已经在内存中了,删除不了。。

js你知道全局变量名或者函数可以直接复制为null之类的

#2


引用 1 楼 showbo 的回复:
删除dom标签没用,代码和css之类已经在内存中了,删除不了。。

js你知道全局变量名或者函数可以直接复制为null之类的



就是不知道变量名