如何动态添加和删除js文件

时间:2012-06-09 04:55:12

标签: javascript dynamic

我有一个网页index.php,我想动态地向这个页面添加和删除JS文件

到目前为止,我做到了,

<script type="text/javascript" src="" id="dynamic_files"></script>

我原本计划通过

更改此脚本标记的src
function loadJsfiles( filename ){ 
    var filePath = 'include/js/'+filename;
    $("script#dynamic_files").attr('src',filePath);
};

并且包含的​​js文件中包含脚本标记:

document.write('<script type="text/javascript" src="include/js/profile1.js"></script>');
document.write('<script type="text/javascript" src="include/js/profile2.js"></script>');
document.write('<script type="text/javascript" src="include/js/profile3.js"></script>');
document.write('<script type="text/javascript" src="include/js/profile4.js"></script>'); –

我的问题是,

将脚本标签打印到我的文档页面,如果是,我该怎么删除它

参考:Dynamic js files

3 个答案:

答案 0 :(得分:1)

加载后你不能做document.write

看这里:

Javascript: Run "document.write" in createElement script failed

您会注意到您的页面将被擦除。

使用哪种方法插入脚本无关紧要,您需要阻止它们使用document.write或者用自定义方法替换document.write。

也许你想使用类似require.js的东西 - 这是一个javascript加载器(感谢Jared提供了比 https://developers.google.com/loader/

答案 1 :(得分:0)

更好的例子是谷歌分析

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

答案 2 :(得分:0)

这就是我的所作所为:

var dynScript,dynParent;

function createjsfile(filename) {
    var fileref = document.createElement('script');
    fileref.setAttribute("type", "text/javascript");
    fileref.setAttribute("src", filename + "?noxhr="+(new Date()).getTime());
    return fileref;
}

function loadjsfile(filename){
    dynScript = createjsfile(filename);
    dynParent = document.getElementsByTagName("head")[0];
    dynParent.appendChild(dynScript);
}

function replacejsfile(filename) {
    var newelement = createjsfile(filename);
    dynParent.replaceChild(newelement, dynScript);
    dynScript = newelement;
}

body.load事件中,我loadjsfile("script.js")

当我想重新加载replacejsfile("script.js")