javascript chrome.action.onClicked或browserAction.onClicked不起作用

qv7cva1a  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(374)

我试图使一个函数执行时,单击工具栏中的扩展图标(在右上角)。我添加了chrome.browserAction.onClicked.addListener在background.js文件,但它不工作。请帮助我。
最终,我的目标是在http://localhost:3000中按HTML元素设置一个不同的图标,我在iframe标记中使用了该元素。(检查localhost:3000 -〉set icon中是否有特定的元素)
我所遵循的参考文献:https://developer.chrome.com/extensions/samples#search:a%20browser%20action%20which%20changes%20its%20icon%20when%20clicked
我的代码如下。
manifest.json

{
  "name": "test",
  "version": "1.0",
  "description": "test",
  "manifest_version": 2,
  "background": {
    "scripts": [
      "background.js"
    ],
    "persistent": false
  },
  "permissions": [
    "storage"
  ],
  "browser_action": {
    "default_title": "test",
    "default_popup": "popup.html"
  }
}

背景.js

chrome.browserAction.onClicked.addListener(() => {
  console.log('test for browser action');
});

弹出窗口.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
</head>

<body>
  <iframe src="http://localhost:3000" width="400" height="600"></iframe>
  <script src="./background.js" charset="UTF-8"></script>
</body>

</html>
cpjpxq1n

cpjpxq1n1#

在manifest.json中指定default_popup会禁用chrome.browserAction.onClicked(MV 2)以及chrome.action.onClicked(清单V3)事件。

**解决方案:**只需将代码放在popup.js中,然后像popup.html中的任何其他脚本一样加载它。

popup.html

<script src=popup.js></script>
</body>
</html>

popup.js

document.body.append('This will run every time the popup is opened');
// note that `document` and `window` refers to the popup not to the web page

要检查弹出窗口及其控制台,请右键单击弹出窗口内部,然后单击“inspect”。
请注意,您不需要后台脚本。后台脚本在隐藏的后台页面中运行,因此不应在其他任何地方使用。请从popup.html中删除它。
P.S.您使用了错误的reference extension。通过Ctrl-F使用内置的浏览器搜索来搜索popup.html而不是页面上的搜索输入)。

相关问题