首页 > 解决方案 > 当链接与 content_script 不匹配时,如何禁用扩展?

问题描述

  "content_scripts": [
    {
      "matches": [
        "https://www.google.com/*"
      ],
      "js": ["contentScript.bundle.js"],
      "css": ["styles.css"]
    }
  ],

如果扩展与 content_script 链接不匹配,如何关闭或不可点击?

标签: javascriptgoogle-chromegoogle-chrome-extension

解决方案


你可以在后台文件中实现这样的东西,

脚步

  1. 创建已在您的内容脚本中指定的域数组。
  2. 在选项卡选择更改和选项卡更新时添加侦听器。
  3. 检查当前活动的选项卡是否在您的阵列中。
  4. 使用上述检查设置标志值 true false。
  5. 现在点击扩展,检查标志是否为真,然后执行任务,否则忽略点击。
let activeExtension = false;
const contentScriptMatchArray = ['https://www.google.com', 'https://www.youtube.com'];

chrome.tabs.onActivated.addListener(handleExtensionActiveState);
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
    handleExtensionActiveState(tab);
});

function handleExtensionActiveState(tabs) {
    if (tabs.tabId) {
        chrome.tabs.get(tabs.tabId, (tab) => {
            activeExtension = checkWhiteListedOrigin(tab);
        });
    } else {
        activeExtension = checkWhiteListedOrigin(tabs);
    }
}

function checkWhiteListedOrigin(tab) {
    const tabURl = new URL(tab.url);
    return contentScriptMatchArray.includes(tabURl.origin);
}

chrome.browserAction.onClicked.addListener(function () {
    if (activeExtension) {
        console.log('Clicked');
    }
});

笔记

  • 您还可以更改您的扩展程序图标,因此您的扩展程序看起来实际上已被禁用

参考


推荐阅读