当 link 与 content_script 不匹配时,如何禁用扩展程序?
How can I make extension disabled when the link is not matched with content_script?
"content_scripts": [
{
"matches": [
"https://www.google.com/*"
],
"js": ["contentScript.bundle.js"],
"css": ["styles.css"]
}
],
如果扩展与 content_script link 不匹配,我如何关闭或不可点击扩展?
你可以在后台文件中实现这样的东西,
步骤
- 创建一个已在您的内容脚本中指定的域数组。
- 在选项卡选择更改和选项卡更新时添加侦听器。
- 检查当前活动的选项卡是否在您的数组中。
- 使用上述检查设置标志值 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');
}
});
备注
- 您还可以更改您的扩展程序图标,这样您的扩展程序看起来就像它实际上已被禁用
参考资料
"content_scripts": [
{
"matches": [
"https://www.google.com/*"
],
"js": ["contentScript.bundle.js"],
"css": ["styles.css"]
}
],
如果扩展与 content_script link 不匹配,我如何关闭或不可点击扩展?
你可以在后台文件中实现这样的东西,
步骤
- 创建一个已在您的内容脚本中指定的域数组。
- 在选项卡选择更改和选项卡更新时添加侦听器。
- 检查当前活动的选项卡是否在您的数组中。
- 使用上述检查设置标志值 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');
}
});
备注
- 您还可以更改您的扩展程序图标,这样您的扩展程序看起来就像它实际上已被禁用
参考资料