2

我有一个网页 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>'); –

我的问题是,

该脚本标签是否会打印到我的文档页面中,如果是,我该如何删除它

参考:动态js文件

4

3 回答 3

1

加载后你不能做 document.write

看这里:

Javascript:在 createElement 脚本中运行“document.write”失败

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

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

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

于 2012-06-09T05:22:32.523 回答
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);
})();
于 2012-06-09T05:26:50.723 回答
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")

于 2013-09-27T23:15:11.670 回答