【发布时间】:2011-06-28 20:55:28
【问题描述】:
我了解document.write 阻止执行以下 javascript。
例如,document.write 将阻止执行以下 javascript,直到 document.write 块完全执行。
<!doctype html>
<script>
document.write('<script>alert(1)<'+'/script>');
alert('2');
</script>
您可以更进一步,要求在执行以下脚本之前远程加载 javascript。
<!doctype html>
<script>
document.write('<script src="remote_script.js"><'+'/script>');
alert(remote_script_variable);
</script>
显然我可以进行回调,但这不是我想要的。
问题
基本上是否有任何其他功能具有阻止脚本加载直到完成的独特功能(我可能想要避免的其他功能)?
假设没有其他函数具有这种独特的功能。 document.write 可以在页面加载后使用而不覆盖页面内容吗?
已经明白了
我知道您可以在使用yennop.js 的同时执行以下操作
var script = document.createElement('script');
var currentScript = document.getElementsByTagName('script')[0];
currentScript.parentNode.insertBefore(script,currentScript);
script.src = '//some url';
【问题讨论】:
-
一般
document.write()无论如何都应该避免。不,你不能在 DOM 准备好之后(即在初始文档关闭之后)使用它而不吹走页面。 -
document.createFragment或iframe把戏怎么样? -
一个文档片段就像一个“迷你DOM”;我知道没有办法像页面文档一样“打开”它。现在,一个 iframe,是的,这可能会起作用。一个大问题是,既然有这么多创建新内容的更好方法,您为什么要这样做?
-
另外,虽然“document.write”确实是同步的,但它并不需要大量的时间来运行。应该和使用“.innerHTML”注入内容大致相同。
标签: javascript