首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁用Chrome扩展的(灰色)页面操作?

如何禁用Chrome扩展的(灰色)页面操作?
EN

Stack Overflow用户
提问于 2020-10-22 00:26:40
回答 3查看 2.1K关注 0票数 6

我希望Chrome扩展图标在除docs.google.com页面之外的所有页面上都被禁用(灰色)。这是我在background.js中的代码。

代码语言:javascript
运行
复制
'use strict';

chrome.runtime.onInstalled.addListener(function() {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [new chrome.declarativeContent.PageStateMatcher({
        pageUrl: { urlContains: 'docs.google' },
      })
      ],
          actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
});

pageActions的文档来看,这应该会导致我的扩展图标在所有页面上都是灰色的,除了那些在docs.google中有docs.google的页面。但是图标在所有页面上都是活动的(不是灰色的)。在非docs.google页面上点击它会导致它什么也不做,但我希望它一开始就变成灰色的。

对此有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-22 04:49:36

这是一个铬中的缺陷,到目前为止还不清楚它是否可以修复。

同时,您可以自己维护图标:

  1. 在任何图像编辑器中制作图标的灰度版本,并分别保存它们。
  2. 在manifest.json中指定灰色图标:
代码语言:javascript
运行
复制
- ManifestV2:

"page_action":{ "default_icon":{ "16":“图标/16-灰色page_action”,"32":“图标/32-gray.png”}}

代码语言:javascript
运行
复制
- ManifestV3 uses `action` instead of `page_action`

"action":{ "default_icon":{ "16":“图标/16-灰色”,"32":“图标/32-gray.png”}

  1. 使用SetIcon操作设置普通图标: chrome.declarativeContent.onPageChanged.removeRules(async () => { chrome.declarativeContent.onPageChanged.addRules([{条件:新chrome.declarativeContent.PageStateMatcher({ pageUrl:{ hostPrefix:‘docs.google. },}),操作:新chrome.declarativeContent.SetIcon({ imageData:{ 16:等待loadImageData(’图标/16.png‘)),32:等待loadImageData(‘图标/32.png’),},},chrome.declarativeContent.ShowAction?新的chrome.declarativeContent.ShowAction():新的chrome.declarativeContent.ShowPageAction(),});};// SVG图标还不支持异步函数loadImageData(url) { const =等待createImageBitmap(等取(Url)).blob();const {宽度: w,height: h} = img;const画布=新OffscreenCanvas(w,h);const ctx = canvas.getContext('2d');ctx.drawImage( img,0,0,w,h);返回ctx.getImageData(0,0,w,h);}
票数 10
EN

Stack Overflow用户

发布于 2021-02-22 11:34:26

如果使用清单版本2,只需在page_action中声明彩色图标,而不是灰色图标。

代码语言:javascript
运行
复制
// manifest.json
 "manifest_version": 2
 "page_action": {
   "default_icon": "icon-color.png"
 },

然后图标将在权限和匹配的URL中为灰色。您可以在页面操作/清单上看到描述。

但是在清单v3中,上面的配置似乎不再工作了。

票数 1
EN

Stack Overflow用户

发布于 2022-10-02 18:56:48

Chrome将这种行为记录在他们的文档:https://developer.chrome.com/docs/extensions/reference/action/#emulating-pageactions-with-declarativecontent中。以下说明如何在清单v3中实现此功能。

代码语言:javascript
运行
复制
// background.js

chrome.runtime.onInstalled.addListener(() => {
  // disable the action by default
  chrome.action.disable();

  // remove existing rules so only ours are applied
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    // add a custom rule
    chrome.declarativeContent.onPageChanged.addRules([
      {
        // define the rule's conditions
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: { hostSuffix: "reddit.com" },
          }),
        ],
        // show the action when conditions are met
        actions: [new chrome.declarativeContent.ShowAction()],
      },
    ]);
  });
});

这将需要declarativeContentmanifest.json中的权限

代码语言:javascript
运行
复制
{
  ...
  "permissions": ["declarativeContent"]
  ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64473519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档