如何在onload事件之前运行JavaScript代码段(Google Chrome扩展程序)

时间:2010-10-18 22:10:09

标签: javascript google-chrome-extension

我要做的是编写一个Chrome扩展程序,插入一个Javascript片段,在页面上的所有Javascript代码运行后,但在onload事件触发之前将触发。 (页面上有一些代码具有onload事件的事件监听器)。我已经尝试了所有我想要扩展的内容,但我没有找到一种一致的方法来使用Google Chrome扩展程序。

我已尝试将run_at值设置为“document_start”和“document_end”,同时将此代码段附加到头部和正文,两者都作为<script&gt; </script&gt ;内部html和<script&gt; </script&gt; src指向扩展名中的文件。什么都没有。

有没有人对此有任何好运或对如何进行有任何想法?


更新!

我已经取得了一些进展,但现在又遇到了另一个障碍。我将扩展设置为run_at document_start,并且在加载脚本之前始终触发。然后我为事件DOMContentLoaded添加一个事件监听器,然后将请求发送到我的后台页面(以获取当前选择的选项,以便我知道如何修改页面上的脚本)。

现在的问题是,有时候,事件会在我从后台页面收到回复之前触发。当我在DOMContentLoaded之前收到回复时,一切正常。由于这是异步的,我还没有找到办法以某种方式迫使等待这个响应。

有没有人想过如何继续?

2 个答案:

答案 0 :(得分:1)

一个天真的解决方案是在关闭body标签之前将脚本只是。通过这种方式,您可以确保所有脚本都已加载,并且尚未调用onLoad

答案 1 :(得分:0)

我没有尝试,但使用defer属性应该可以。

http://dev.w3.org/html5/spec-author-view/scripting-1.html#attr-script-defer

它适用于WebKit,但仅限于上个月,所以它需要一段时间才能达到Chrome稳定版。

http://webkit.org/blog/1395/running-scripts-in-webkit/

您可以尝试Chrome Canary或最近的Chromium快照。

http://tools.google.com/dlpage/chromesxs
http://build.chromium.org/buildbot/snapshots/

可能还需要设置HTML5文档类型。

http://www.w3.org/TR/html5-diff/#doctype