首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用document.write()

调用document.write()
EN

Stack Overflow用户
提问于 2011-08-31 10:14:41
回答 3查看 2.1K关注 0票数 5

此代码不起作用:

代码语言:javascript
复制
<div class="pix"><div id="addTimestamp"></div></div>
<script type="text/javascript">
(function () {
    var date = new Date(), 
        timestamp = date.getTime(),
        newScript = document.createElement("script");

    newScript.type = 'text/javascript';
    newScript.src = 'someUrl=' + timestamp + '?';
    document.getElementById('addTimestamp').appendChild(newScript);
}())
</script>

动态脚本添加了document.write(someCode which loads banners)。但在Firebug中,我有一个错误:

从异步加载的外部脚本调用document.write()的document.write被忽略了.

EN

回答 3

Stack Overflow用户

发布于 2011-08-31 10:19:24

添加以下内容:

代码语言:javascript
复制
newScript.async = false;

您的脚本需要同步加载才能使document.write()工作(参见https://developer.mozilla.org/En/HTML/Element/Script#attr-async)。正如您现在所做的那样,只要浏览器有时间,脚本就会加载--因此您无法知道document.write()中的HTML将被插入到哪里。浏览器决定忽略您的document.write()调用,以防止更糟的问题。

票数 4
EN

Stack Overflow用户

发布于 2011-08-31 10:26:05

文档编写javascript会导致html解析器在看到“尝试”时失败。

代码语言:javascript
复制
document.getElementById('addTimestamp').innerHTML = '<script type="text/javascript"     src="someUrl=' + timestamp + '?"' + 'charset="utf-8"></sc' + 'ript>';

但是,如果要在DOM中插入脚本标记,还需要确定DOM是否已加载。

票数 1
EN

Stack Overflow用户

发布于 2011-08-31 10:33:36

Levon,似乎您正试图克服页面加载速度方面的问题(我不认为有其他原因不只是静态地插入脚本)。

威德米尔的回答是正确和有效的,但请看我对他的回答的评论。

另一种方法,它可以工作,但应该非常小心地实现,是覆盖document.write本身。这是非常,非常,微妙的工作,它需要经过彻底的测试,但它是可以做到的,实际上。document.write的每个调用都可以将某些内容存储到某种字符串缓冲区中。然后,通过确定是时候刷新所有内容,只需将所有缓冲区内容插入到某个DOM元素即可。

很有用,但很变态。最好的选择是根本不使用document.write。但是,遗憾的是,这并不总是一个选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7255526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档