此代码不起作用:
<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被忽略了.
发布于 2011-08-31 10:19:24
添加以下内容:
newScript.async = false;您的脚本需要同步加载才能使document.write()工作(参见https://developer.mozilla.org/En/HTML/Element/Script#attr-async)。正如您现在所做的那样,只要浏览器有时间,脚本就会加载--因此您无法知道document.write()中的HTML将被插入到哪里。浏览器决定忽略您的document.write()调用,以防止更糟的问题。
发布于 2011-08-31 10:26:05
文档编写javascript会导致html解析器在看到“尝试”时失败。
document.getElementById('addTimestamp').innerHTML = '<script type="text/javascript" src="someUrl=' + timestamp + '?"' + 'charset="utf-8"></sc' + 'ript>';但是,如果要在DOM中插入脚本标记,还需要确定DOM是否已加载。
发布于 2011-08-31 10:33:36
Levon,似乎您正试图克服页面加载速度方面的问题(我不认为有其他原因不只是静态地插入脚本)。
威德米尔的回答是正确和有效的,但请看我对他的回答的评论。
另一种方法,它可以工作,但应该非常小心地实现,是覆盖document.write本身。这是非常,非常,微妙的工作,它需要经过彻底的测试,但它是可以做到的,实际上。document.write的每个调用都可以将某些内容存储到某种字符串缓冲区中。然后,通过确定是时候刷新所有内容,只需将所有缓冲区内容插入到某个DOM元素即可。
很有用,但很变态。最好的选择是根本不使用document.write。但是,遗憾的是,这并不总是一个选择。
https://stackoverflow.com/questions/7255526
复制相似问题