如何在onload事件之前运行JavaScript代码段(googlechrome扩展)

如何在onload事件之前运行JavaScript代码段(googlechrome扩展),javascript,google-chrome-extension,Javascript,Google Chrome Extension,我想做的是编写一个Chrome扩展,插入一个Javascript片段,在页面上的所有Javascript代码运行之后,但在onload事件触发之前,该片段将触发。(页面上有一些代码具有onload事件的事件侦听器)。我已经尝试了所有我想到的扩展,但我还没有找到一个一致的方法来与谷歌浏览器扩展做到这一点 我已尝试将run_at值设置为“document_start”和“document_end”,并将此代码段同时添加到头部和正文中,这两种格式都是带有内部html的,以及带有指向扩展名中文件的src

我想做的是编写一个Chrome扩展,插入一个Javascript片段,在页面上的所有Javascript代码运行之后,但在onload事件触发之前,该片段将触发。(页面上有一些代码具有onload事件的事件侦听器)。我已经尝试了所有我想到的扩展,但我还没有找到一个一致的方法来与谷歌浏览器扩展做到这一点

我已尝试将run_at值设置为“document_start”和“document_end”,并将此代码段同时添加到头部和正文中,这两种格式都是带有内部html的
,以及带有指向扩展名中文件的src的
。没有什么能始终如一地起作用

有没有人有过这样的运气,或者有没有想过如何继续?
更新

我取得了一些进展,但现在又遇到了另一个障碍。我将扩展设置为在
document\u start
运行,它总是在加载脚本之前启动。然后,我为事件添加一个事件监听器
DOMContentLoaded
,然后向我的后台页面发送一个请求(获取当前选择的选项,以便我知道如何修改页面上的脚本)

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


有人想过如何继续吗?

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

我还没有尝试,但是使用defer属性应该可以工作

它在WebKit中工作,但只是从上个月开始,所以需要一段时间才能达到Chrome稳定

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


它可能还需要设置HTML5 doctype


我在分机中尝试了这一点,但没有成功。如果我使用document\u start,那么我就没有要附加到的body元素的访问权。如果我执行document_end,那么有时onload事件在扩展之前就已经触发了。不过谢谢你的推荐。我对chrome扩展tbh不太熟悉。我的逻辑是,
document\u end
可能是在body标记关闭后添加的,这意味着body的
onLoad
事件已经触发。祝你好运!:)是的,这就是我得出的结论。在玩了document_start之后,我取得了一些进展!我已经更新了原始问题的细节。谢谢你的建议,但它似乎不起作用。据我所知,这是一个仅由Internet Explorer支持的属性。感谢您更新pdknsk。不幸的是,这个扩展将被一些人使用,迫使他们升级到最新的Crimum snapshop并不是一个真正的选择。然而,随着进展,我更新了我的问题。我们快到了!