通过JavaScript向DOM中添加外部JavaScript文件

通过JavaScript向DOM中添加外部JavaScript文件,javascript,Javascript,我需要加载由PHP脚本生成的外部JavaScript文件,我还想将任何查询字符串参数传递给脚本,我提出了以下解决方案: <script>var url = 'http://example.com/scripts/js.php?foo=bar';url += location.search.replace(’?',’&’);var s = document.createElement(’script’);s

我需要加载由PHP脚本生成的外部JavaScript文件,我还想将任何查询字符串参数传递给脚本,我提出了以下解决方案:


<script>
var url = 'http://example.com/scripts/js.php?foo=bar';
url += location.search.replace(’?',’&’);

var s = document.createElement(’script’);
s.setAttribute(’type’,'text/javascript’);
s.setAttribute(’src’, url);

// get the script’s ‘outer html’ and add it to the document.
var t = document.createElement(’div’);
t.appendChild(s);
document.write(t.innerHTML);

</script>


var url='0http://example.com/scripts/js.php?foo=bar';
url+=location.search.replace(“?”、“&”)

var s=document.createElement('script')
s.setAttribute('type','text/javascript')
s.setAttribute('src',url)

//获取脚本的“外部html”并将其添加到文档中。
var t=document.createElement('div')
t.appendChild
document.write(t.innerHTML)

这适用于除IE(见图)以外的所有浏览器,我认为问题在于生成的脚本还下载了更多的JS,这似乎挂起了。。。有没有更好的方法来做这样的事情

更新 如果我按Ctrl+F5加载页面,一切正常…为什么?位于的脚本是一组document.write调用。

您可以使用。 它易于使用和维护

jQuery适用于:IE 6.0+、FF 2+、Safari 3.0+、Opera 9.0+、Chrome

jQuery.getScript( url, [callback] ) 
使用HTTP GET请求加载并执行本地JavaScript文件。 在jQuery1.2之前,getScript只能从与原始页面相同的域加载脚本。从1.2开始,您现在可以从任何域加载JavaScript文件。警告:在Safari版本2及更高版本中,无法在全局上下文中同步评估脚本。如果通过getScript加载函数,请确保在延迟后调用它们

例如:

$.getScript("test.js", function(){
  alert("Script loaded and executed.");
});

为什么不将创建的脚本标记附加到头部或身体上?

谷歌的方式:

<script type="text/javascript">
    document.write(unescape("%3Cscript src='file.js' type='text/javascript'%3E%3C/script%3E"));
</script>

write(unescape(“%3Cscript src='file.js'type='text/javascript'%3E%3C/script%3E”);

您可以使用div.innerHTML来附加此字符串,而不是document.write。

它在IE中不起作用的原因可能是您没有在其他脚本标记中设置type属性。他很挑剔;如果两个脚本标记的类型不同,它会将它们视为甚至不在同一页上。

因为我插入的脚本是一个包含大量document.write调用的脚本。