我有一个JS,它在关闭</body>
标记之前存在,该标记包含一个方法,如果执行某个操作,该方法会注入另一个<script>
元素来加载JS文件。
附加的代码片段如下所示:
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://path/to/script.js');
document.body.appendChild(script);
该代码适用于除IE7之外的所有浏览器。在IE7上,它成功地将脚本附加到DOM中,但不加载它。
我想指出的另一件事是,我还尝试将该脚本附加到<head>
,但仍然无效。
答案 0 :(得分:2)
而不是将script
元素添加到body
元素(当您尝试在关闭</body>
标记之前执行此操作时未关闭) ,尝试将您的脚本添加到head
。此外,请勿使用setAttribute
,而是直接设置新DOMElement
的属性:
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://path/to/script.js';
document.getElementsByTagName('head')[0].appendChild(script);
答案 1 :(得分:0)
在DOM加载完成后添加脚本?我知道IE6在加载之前修改DOM会有问题(请致命:无法加载此页面)。
使用window.onload
或者只是将脚本放在标题中包含的javascript文件中。
此外,如果JavaScript资源实际上不是JavaScript文件,而是某些生成JavaScript文件的脚本,请确保您发送JavaScript内容标题。
答案 2 :(得分:0)
您是否尝试过添加脚本标记,然后设置源代码?我知道IE7在附加样式标签时需要这个顺序,所以它可能值得一试!