试图写js使整个页面变成空白

时间:2010-07-05 03:55:59

标签: php javascript jquery html

当我使用 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>

3 个答案:

答案 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}}:

  

打开文档流进行编写。如果   这个文件存在于目标中   方法清除它。