gpt4 book ai didi

google-chrome - Chrome 扩展 - 每个页面加载多次注入(inject)内容脚本

转载 作者:行者123 更新时间:2023-12-02 00:28:45 25 4
gpt4 key购买 nike

我在 Chrome 扩展程序中多次将内容脚本注入(inject)同一页面时遇到一些问题。

我正在从我的“background.html”页面注入(inject)内容脚本,在选项卡更改上:

chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){ 
chrome.tabs.getSelected(null,function(tab){
// Do some stuff
chrome.tabs.executeScript(null, { code: code}, function(result){

...ETC

在内容脚本中,我有一些 console.log 命令

问题是当我加载单个页面时,我看到每个日志在控制台中显示 2-4 次。

我很清楚这是因为页面中的 iframe 而发生的,我认为至少......我的问题是为什么?

我在文档中看到“all_frames”( list 中的内容脚本权限数组)默认情况下应设置为“false”,导致内容脚本仅被注入(inject)页面的顶部框架,但这根本不会发生!

为什么要多次注入(inject)?我是否需要将“all_frames”物理设置为false?

第二:

有什么方法可以判断扩展程序尝试将内容脚本注入(inject)到的页面是 iframe 还是“background.html”页面内的顶部?

我试过了
if(window.top === window){ console.log('whatever'); }

并发现它不是 100% 的时间。即使我在我的代码块的其余部分(围绕 chrome.tabs.executeScript() )有这个条件,我仍然看到多次注入(inject)的内容脚本......

任何想法或建议将不胜感激! :)

最佳答案

onUpdated 每次选项卡的状态更改时触发。这包括它何时加载和完成加载,这解释了许多日志语句。
每次触发事件时,您都需要检查发生了什么变化(URL 发生了变化、加载了等等)。

关于google-chrome - Chrome 扩展 - 每个页面加载多次注入(inject)内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829895/

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