当我使用 document.write 时,整个页面都会显示空白,只显示广告。
function __adthis(id) {
$.getJSON('banner.php', function (data) {
var adNum = Math.floor(Math.random() * data.ban.length);
document.write("<SCRIPT TYPE='text/javascript'> SRC='+data.ban[0].link+'><\/SCRIPT>");
});
}
这是一个测试, 这是一个测试, 这是一个测试, 这是一个测试,
<div id="res"><script>`__adthis();`</script></div>
答案 0 :(得分:3)
请勿使用document.write
。相反,使用DOM方法创建<script>
元素并将其添加到div:
var e = document.createElement('script');
e.setAttribute('type', 'text/javascript');
e.setAttribute('src', data.ban[0].link);
document.getElementById('res').appendChild(e);
答案 1 :(得分:0)
HTML
<div id="ad_goes_here" />
的JavaScript
function __adthis(id){
$.getJSON('banner.php', function(data) {
var adNum = Math.floor(Math.random()*data.ban.length);
$("#ad_goes_here").html("<SCRIPT TYPE='text/javascript' SRC='+data.ban[0].link+'><\/SCRIPT>");
});
}
答案 2 :(得分:0)
关于为什么document.write()
无法正常工作的旁注。 W3C spec以这种方式定义它:
将一串文本写入文档 由open()
打开的流
Mozilla developer docs添加此评论:
写入已经存在的文档 加载而不调用document.open() 将自动执行 document.open调用。一旦你有了 完成写作,建议 调用document.close(),告诉你 浏览器完成加载页面。 您编写的文本被解析为 文件的结构模型。
换句话说,在呈现文档后使用document.write()
会触发document.open()
call,其中包含{{3}}:
打开文档流进行编写。如果 这个文件存在于目标中 方法清除它。