javascript - 当链接与 content_script 不匹配时,如何禁用扩展?
问题描述
"content_scripts": [
{
"matches": [
"https://www.google.com/*"
],
"js": ["contentScript.bundle.js"],
"css": ["styles.css"]
}
],
如果扩展与 content_script 链接不匹配,如何关闭或不可点击?
解决方案
你可以在后台文件中实现这样的东西,
脚步
- 创建已在您的内容脚本中指定的域数组。
- 在选项卡选择更改和选项卡更新时添加侦听器。
- 检查当前活动的选项卡是否在您的阵列中。
- 使用上述检查设置标志值 true false。
- 现在点击扩展,检查标志是否为真,然后执行任务,否则忽略点击。
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');
}
});
笔记
- 您还可以更改您的扩展程序图标,因此您的扩展程序看起来实际上已被禁用
参考
推荐阅读
- amazon-web-services - 从 Dialogflow 到 Alexa,如何创建 lambda 函数?
- python-3.x - fanyimpute 安装后,我在导入时遇到此错误
- docker - 在 docker 容器中使用 webhdfs 打开一个文件
- transfer-learning - 如何在 TF2.1 中保存/加载用于微调/迁移学习的部分模型?
- tfs - TFS 代码审查在更新代码审查状态时发生错误
- javascript - 无法将变量从 PHP 传递到 JavaScript
- c - c线程中的无效类型转换,void*到int
- php - Laravel - DB Seeder 命令未按预期工作
- loops - 如何在 with_dict 循环期间引用列表
- python - 使用python在2D地图中寻找路径