document.write加载外部Javascript源时不起作用
我正尝试将外部JavaScript文件动态加载到HTML元素中以预览广告代码。 该脚本加载并执行,但脚本中包含“document.write”,它有一个问题正确执行但没有错误。
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
source = 'http://ib.adnxs.com/ttj?id=555281';
// DOM Insert Approach
// -----------------------------------
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', source);
document.body.appendChild(script);
});
</script>
</head>
<body>
</body>
</html>
我可以让它工作
我无法修改脚本,因为它是由第三方生成和托管的。
有谁知道为什么document.write不能正常工作? 有没有办法解决这个问题?
谢谢您的帮助!
另一个解决方案是创建一个iframe,然后在ajax调用准备就绪时加载该iframe中的脚本:
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var doc = iframe.contentWindow.document;
// do this whenever you want (f.ex after ajax is made):
doc.open();
doc.write('<script src="http://ib.adnxs.com/ttj?id=555281">x3C/script>');
doc.close();
这样,最终脚本中的document.write
不会影响您的网站,只是iframe。 您需要设置iframe的样式以适应广告。
如果它还包含document.write
则异步加载外部脚本标记将具有潜在危险。 所以我会建议在你的最后使用document.write
:
document.write('x3Cscript src="http://ib.adnxs.com/ttj?id=555281">x3C/script>');
或只是一个脚本标签(杜):
<script src="http://ib.adnxs.com/ttj?id=555281"></script>
你不希望$(function()
(当dom准备好时)的document.write
,
删除document .ready
包装。
然后移动到 - </body>
之前。 ( 或者到容器位置 - 您想要显示小部件的位置。)
所以:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
</head>
<body>
//bla bla...
<script type="text/javascript">
(function (){
var source = 'http://ib.adnxs.com/ttj?id=555281';
// DOM Insert Approach
// -----------------------------------
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', source);
document.body.appendChild(script);
})();
</script>
</body>
</html>
重要:
链接地址: http://www.djcxy.com/p/47907.html上一篇: document.write Not working when loading external Javascript source