Chrome扩展程序针对特定页面运行

Noo*_*oor 38 google-chrome-extension

我正在写一个chrome扩展,只是在它警告Hello World我为权限指定的页面完成加载,但它不起作用,这是我的脚本

文件:manifest.json

{
  "name": "Hello",
  "version": "1.0",
  "description": "Says hello to Google",
  "permissions": ["http://*.google.com/"]
  "browser_action": {
    "popup": "Hello.html"
  }
}
Run Code Online (Sandbox Code Playgroud)

文件:Hello.html

<script language="Javascript">
   alert("Hello World");
</script>
Run Code Online (Sandbox Code Playgroud)

aps*_*ers 59

您正在添加一个浏览器操作弹出窗口,它会在浏览器的右上角添加一个按钮.(它可能是隐形的,因为你没有为它指定一个图像.你的地址栏右侧应该有一些空的空间;尝试点击它以Hello.html在弹出窗口中看到你的.)

你想要的是一个内容脚本.内容脚本可以注入Chrome加载的每个页面.您可以使用清单文件中的子项matchesexclude_matches子项来指定哪些页面可以获取注入的脚本.

{
  "name": "Hello",
  "version": "1.0",
  "description": "Says hello to Google",
  "permissions": ["tabs", "*://*.google.com/*"],
  "content_scripts": [
    {
      "matches": ["*://*.google.com/*"],
      "js": ["hello.js"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

确保重命名Hello.htmlhello.js(并删除<script>标记).

另请注意,我将您更改http://*.google.com/*://*.google.com/*以便通过HTTP和HTTPS应用于Google(并且尾随*确保它将应用于所有页面google.com,而不仅仅是主页面).

  • 由于您正在更新答案,因此您还可以将其更改为清单版本2. (7认同)

iho*_*ond 6

我遇到了这个答案,试图找到一种仅在某些页面上启用图标的方法,这就是我的做法。文档

背景.js

chrome.runtime.onInstalled.addListener(function() {
  chrome.tabs.onActivated.addListener(async info => {
    const tab = await chrome.tabs.get(info.tabId);
    
    const isGithub = tab.url.startsWith('https://github.com/');
    isGithub 
      ? chrome.action.enable(tab.tabId) 
      : chrome.action.disable(tab.tabId);
  });
});
Run Code Online (Sandbox Code Playgroud)

确保在清单中添加选项卡权限