问题标签 [chrome-extension-manifest-v2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9450 浏览

javascript - 将图像嵌入 Chrome 扩展程序

我正在构建一个 Google Chrome 扩展,它将 HTML 注入到一个真实的网页中。注入还包含图像,现在我想知道如何在扩展中引用图像。到目前为止,我只能使用http://example.com/myimage.png在服务器上引用它们。但这需要一段时间才能加载。

是否可以在扩展程序中打包图像并从浏览器的任何位置引用它们?如何?

谢谢你的帮助。

0 投票
0 回答
66 浏览

javascript - 获取 Chrome 扩展内容脚本以识别 URL 哈希中的延迟更改

我有一个 Chrome 扩展程序(当前清单 v2,但很快将升级到 v3),它需要与通过更改 URL 中的哈希来模拟页面更改的 SPA 一起使用。

例子:

我有单独的内容脚本#page1#page2,以及网站上其他页面的默认内容脚本。

我遇到的问题是页面最初加载时没有散列,然后在延迟几秒钟后,应用程序添加了#page1散列。换句话说,当用户导航到#page1

  • 该站点最初加载为https://www.example.com/somedir/
  • 我的 #page1 的 Chrome 扩展内容脚本查找包含 glob *#page1,在 URL 中看不到#page1哈希并回退到默认内容脚本
  • 几秒钟的延迟后,站点将#page1哈希附加到 URL,大概是通过设置location.hash(即,URL 现在是https://www.example.com/somedir/#page1

我认为我正在寻找某种方法来检测#page1哈希已添加到 URL,然后强制扩展重新执行并注入正确的内容脚本#page1。有没有办法做到这一点?如果没有,是否有其他方法可以解决此时间问题?

谢谢你。

0 投票
1 回答
80 浏览

javascript - 内容脚本不与后台脚本通信 - chrome 扩展

我正在尝试将新标签 URL 从 background.js 发送到 content.js。.sendMessage() 执行但没有到达 content.js

背景.js:

内容.js:

清单.json:

0 投票
1 回答
49 浏览

google-chrome - 侦听器不适用于 Chrome 丰富的通知 API ManifestV2-Chrome 扩展

我无法使用清单 V2 进入通知 API 的任何侦听器函数。显示通知后我可以执行回调函数。我还可以看到chrome.notifications.onClicked.addListener在调试模式下使用时存在。

这是我的 manifest.json 文件

脚本.js

console.log 结果

0 投票
0 回答
245 浏览

javascript - 尝试使用 chrome 扩展复制和粘贴表单数据

我正在尝试创建一个 chrome 扩展来复制表单数据并粘贴它。我以某种方式取得了结果,但突然停止工作。我的 content_script1 和 content_script2 没有被加载。我对此有点陌生,并且对造成这种情况的原因感到困惑。我的代码是:

清单.json

弹出窗口.html

Popup.js

content_script1.js

content_script2.js

我正在使用 test.html 来测试我的应用程序

测试.html

0 投票
0 回答
36 浏览

javascript - 如何使用 chrome 扩展对以“chrome-extension://....../options.html”开头的 url 执行内容脚本

  1. 我已使用“<all_urls>”获取权限。但是,我收到了这个错误。“无法访问页面内容。扩展清单必须请求访问相应主机的权限。”

    chrome.tabs.create({ url: 'chrome-extension://padekgcemlokbadohgkifijomclgjgif/options.html#!/profile/proxy' }, function(tab) {
    chrome.tabs.executeScript(tab.id, { file: 'js /content.js' });
    });

清单.json

如果这是不可能的。然后请建议我其他方法。我的目标是更改或修改其他现有扩展中的选项。

0 投票
0 回答
164 浏览

google-chrome - chrome.browsingData.remove 或 chrome.cookies.remove 不删除所有 cookie

在我的 chrome 扩展中,我想删除所有内容。我正在使用此代码

这是删除其他东西,但不是所有的 cookie 和缓存。我有以下权限并使用"manifest_version": 2

我什至尝试使用cookies方法删除所有cookies

当我使用chrome.cookies.getAll, after chrome.browsingData.removeorchrome.cookies.remove时,这显示了0cookie 计数。但是当我在浏览器中进入历史清除选项时,我看到一些计数显示在Cookies 和其他站点数据中 在此处输入图像描述

我什至试过

chrome.browsingData.remove但这也不是清除一些cookie 。正如您在图像中看到的那样,即使并非所有缓存都已清除。当我从浏览器清除选项中清除它时,cookie 计数变为0但不是来自 chrome 扩展。我错过了什么吗?

0 投票
2 回答
188 浏览

google-chrome-extension - 在开发过程中使用 CI/CD 和 update.xml 自动更新 Chrome 扩展

我在本地开发了一个 Chrome 扩展程序,它是一个 React 应用程序。

我已经设置了一个 CI/CD 管道,以便构建 React 应用程序yarn build以生成dist包含应用程序文件和manifest.json. 然后,管道使用此 npm 包创建文件并将其与已使用新版本号和新文件 URL 更新.crx的文件一起上传到公共存储位置。update.xml.crx

我在本地创建了一个私钥 ( key.pem) 并存储在密钥库中,这样 CI 管道中的“打包”作业每次都使用相同的私钥。公钥已添加到 ,manifest.json以便应用 ID 每次都保持相同。

更新2.xml

清单.json

安装和更新步骤:

  1. 转到chrome://extensions/> 开发人员模式 > 加载解压 > 选择本地dist目录。
  2. 解压后的扩展出现在带有 app id 的扩展列表中:blahblahooaejaldnohkhmaedknkfogn
  3. 选择扩展并单击“更新”

预期结果:

Chrome 查询远程update.xml文件,查看比最初安装的版本更高的版本,crx从指定位置下载并安装新文件。

实际结果:

扩展未更新。

注意:我crt从存储位置下载了 CI/CD 生成的并上传到这里。该在线工具显示的公钥与keymanifest.json 中的值匹配,计算出的应用程序 ID 与update.xml.

为了更深入地挖掘,我打开了 Fiddler4 并嗅探了 Chrome 发出的调用。尽管我不明白所有内容,但其中一个回复是:

那个“应用程序 ID”不是我的(或者是 Chrome 应用程序 ID?),但“错误未知应用程序”的状态可能会提示正在发生的事情。

0 投票
0 回答
46 浏览

google-chrome-extension - 如何跳过私有 Chrome 扩展的手动测试?

我正在构建一个私有的扩展,只有一些测试用户可以访问。

它使用我拥有的页面创建 iFrame。iFrame 是一个拼图或单词拼图,在一段时间或点击页面后生成。所以扩展做了一些通常不应该做的事情。好吧,如果以未打包的形式导入,它可以在 DEV 浏览器上运行。我想在普通浏览器上执行测试,并可能更改策略以对用户隐藏扩展。

该扩展也可以在不声明主机 (http/s) 的情况下工作,但我必须添加 content_scripts,并且 content_scripts 可能会触发额外的测试/评论。脚本可以以不同的方式内联吗?

Welll..有没有办法跳过私人/有限用户扩展的手动审查?

ps 我不想等待一个星期(我的第一次延期,所以我不知道需要多长时间)才能获得不会公开分发的内容。因为我已经等了几个小时并且没有审查 - 我想它将被手动审查。阅读我的临时代码不是一件令人愉快的任务。

编辑:我删除了一些不需要的权限。我正在修改 content_script,但它仍然会进行人工审核。

清单是

0 投票
0 回答
15 浏览

google-chrome-extension - 两个后台脚本之间的 sendMessage/onMessage.addListener 不起作用

两个后台脚本之间的 sendMessage 和 onMessage.addListener 不起作用。此致!

背景1.js

背景2.js