2014-03-12 31 views
2

我尝试添加第三方脚本动态的常用方法:为什么不将外部脚本添加到DOM?

var s = document.createElement('script'); 
s.type = 'text/javascript'; 
s.src = document.location.protocol+'//path.to.script/script.js'; 
document.getElementsByTagName('head')[0].appendChild(s); 

它不工作 - 我看不出在<head>标签<script>标签。当我在浏览器控制台中运行相同的代码段时,情况也是如此 - 我在<head>中看不到<script>标记。当我直接打开链接时,我实际上看到了script.js文件内容。如果我将s.src更改为其他(任何),则会按预期添加<script>标记。

什么可以阻止脚本被动态添加?

+0

是否脚本在控制台的网络选项卡中显示? –

+0

@mritz_p是的它确实 – MeLight

回答

1

Some browsers requires.async=true;当添加动态脚本时 - 为了自动运行。

尝试添加并再次检查。

而且(最佳实践尖),我建议你最好的做法不是要添加到头部,但:

var entry = document.getElementsByTagName('script')[0]; 
entry.parentNode.insertBefore(script, entry); 

而且你不需要document.location.protocol+'//path.to.script/script.js';

'//path.to.script/script.js' - 会做就好了。

这是怎么了谷歌的工作:

enter image description here

+0

添加'asynch'部分,并将注入方法更改为您的'entry'的东西,仍然没有去:( – MeLight

相关问题