gpt4 book ai didi

javascript - DOMContentLoaded 事件无法捕获 Chrome 内容脚本中子框架的加载

转载 作者:行者123 更新时间:2023-12-02 15:57:56 25 4
gpt4 key购买 nike

我在 Firefox 扩展中使用 DOMContentLoaded 事件来捕获一个选项卡窗口中每个子框架的加载事件。

但是在 Chrome 内容脚本中,我使用

document.addEventListener("DOMContentLoaded", function(evt){console.log('domcontentloaded!')}, true);

不行,只能捕获顶部窗口的加载事件。

那么 Firefox 和 Chrome 之间有什么不同吗?

最佳答案

如果在顶部框架中执行,即使在 Firefox 中,此代码也应该不会按照您所描述的方式工作。

实现此目的的最简单方法是在每个帧中注入(inject)内容脚本。

也许不同之处在于 Firefox 默认会这样做;在 Chrome 中这是可选的。由于控制台在框架/上下文之间共享,因此您会得到(错误的!)印象:它来自顶部框架中的代码。

在 list 中:

"content_scripts" : [
{
"matches" : ["<all_urls>"],
"js" : ["content.js"],
"all_frames" : true,
"run_at" : "document_start"
}
]

注意:我也将 "document_start" 放在那里,因为默认情况下您的脚本是在该事件之后注入(inject)的(因此不能保证您能捕获它) 。欲了解更多信息,请参阅run_at parameter docs .

使用executeScript:

chrome.tabs.executeScript({file: "content.js", all_frames: true});

关于javascript - DOMContentLoaded 事件无法捕获 Chrome 内容脚本中子框架的加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31447961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com