2009-10-12 61 views
2

文件到DOM我需要加载外部JavaScript文件,该文件是由PHP脚本生成的,我也想通过任何查询字符串参数传递给脚本,以及,我想出了以下解决方案:添加外部JavaScript通过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>

这适用于所有浏览器,除了IE(去图),我相信这个问题是生成的脚本也可以下载更多的JS,这似乎挂...有没有更好的办法做这样的事情?

UPDATE 如果我按Ctrl + F5加载页面,一切正常......这是为什么? http://example.com/scripts/js.php的脚本是一堆document.write调用。

回答

2

您可以使用jQuery method。 它易于使用且易于维护。

jQuery是对作品:IE 6.0+,FF 2+和Safari 3.0+,歌剧9.0以上,铬

jQuery.getScript(url, [callback]) 

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

例子:

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

为什么不追加你创建的脚本标记头部或身体?

+0

因为我插入脚本是一堆文件撰写调用的脚本。 – Steve 2009-10-12 16:16:27

1

谷歌的方式:

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

相反文件撰写的,你可以使用div.innerHTML追加此字符串。

+0

这不是我已经在做什么? – Steve 2009-10-12 16:13:28

0

它不工作在IE可能是因为你没有设置在其他脚本标记类型属性的原因。 IE非常挑剔;如果两个脚本标记具有不同的类型,它会将它们视为它们甚至不在同一页面上。