我要做的是编写一个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
之前收到回复时,一切正常。由于这是异步的,我还没有找到办法以某种方式迫使等待这个响应。
有没有人想过如何继续?
答案 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文档类型。