2012-12-15 58 views
5

我正在研究一个扩展插件,它将一个div插入到DOM的body元素中。现在我正在创建一个事件处理程序,它在加载时触发以创建元素。这意味着页面完全加载,然后插入我的div,这意味着用户在没有div的情况下看到页面,直到加载完成,然后弹出div。我希望div在页面加载时在那里。在任何其他元素被写入之前是否有办法劫持body元素?或者,我必须以某种方式隐藏内容,直到所有内容都已加载完毕,这当然意味着用户会在一段时间内看到空白屏幕。页面加载时插入DOM元素,而不是之后

如果可能,我想避免jQuery。

+0

使用“run_at”:“document_end”将保证div尽早被注入*,尽管它不能保证用户不会在DOM中看到这种变化。 –

回答

1

我不是100%确定,但看着Chrome扩展开发者指南,看起来好像如果您使用的是内容脚本并在您的扩展程序的清单中指定run_at字段为document_start,那么它应该在注入文件之前DOM被构建。

+0

正确。注意:在document_start中,'document.body尚不存在。你必须使用'document.documentElement.appendChild(element);' –

+0

@RobW注入,所以注入的'div'将被放置在'body'之外?这看起来像不正确的HTML。 – Stan

+0

@Stan在document_start中,唯一存在的标记是'',所以它是唯一的选项。我没有遇到过这个方法失败的页面。 –

相关问题