如何确保在体渲染完成之前进行document.write操作?

时间:2013-10-16 10:41:04

标签: javascript

我有一段JavaScript代码,在呈现<body>时将异步调用。我还有一个JavaScript文件,它将使用这段代码。这段代码和加载文件的脚本都写在外部系统中。将此代码插入页面时无法预测。我无法更改JS文件中的代码。

现在,JS文件包含document.write方法来创建图像。但是,不建议使用此方法,因为无法预测写入操作何时发生。例如,如果它在正文渲染完成后运行并且在加载DOM之后运行,则页面内容将被完全重写。 我想确保不应该发生上述最糟糕的情况。怎么做?

1 个答案:

答案 0 :(得分:1)

不要以为你可以100%肯定。但您可以使用document.body.innerHTML代替document.write

document.write('<img src="1.gif">');

很可能会重置DOM,尤其是放在<body>

之后的某个地方
document.body.innerHTML+='<img src="1.gif">';

不会,甚至不会放在window.onload函数中。


现在,您说您无法更改JS文件中的代码,但您可以更改document.write

document.write = function() {
    document.body.innerHTML+=arguments[0];
}

如果JS像这样调用document.write

document.write('<img src="1.gif">');

然后现在实际调用document.body.innerHTML+=arguments[0];,将<img>追加到正文中。

Viola,你已经克服了document.write ...

的问题