gpt4 book ai didi

google-chrome-extension - 如果 list v3 中不允许当前选项卡 url,则防止弹出

转载 作者:行者123 更新时间:2023-12-05 09:30:26 29 4
gpt4 key购买 nike

我正在编写一个 chrome 扩展,我想要么完全禁用弹出窗口,要么在 v3 list 的 host_permissions 属性不允许当前选项卡的 url 时显示一条消息。

这是一个开发支持工具,我们不希望为生产 url 启用它。所以如果我设置:

"host_permissions": [
"http://localhost:3000/",
"https://*.dev.some-site.com/",
"https://www.uat.some-site.com/"
]

...那么如果用户在 www.some-site.com (或其他任何地方),我希望禁用弹出窗口。

我可以很容易地获得相关的 url:

let [currentTab] = await chrome.tabs.query({ active: true, currentWindow: true });
const { url } = currentTab;
const cookieUrl = url.match(/https?:\/\/[^/]+\//)?.[0];

...我可以用

获取允许的文件模式数组
chrome.runtime.getManifest().host_permissions

但是我如何使用这个或其他任何东西来防止弹出窗口?此外,将该通配符转换为真正的正则表达式会有点麻烦。难道没有一些开箱即用的方法可以做到这一切吗??

最佳答案

使用chrome.declarativeContenthost_permissions 中的站点启用操作弹出窗口并在默认情况下在其他任何地方禁用它的 API。

禁用时,图标变为灰色。单击它将显示内置的上下文菜单,不会触发 chrome.action.onClicked。拼图菜单中的扩展名称也显示为灰色。

list .json:

  "action": {"default_icon": "icon.png"},
"permissions": ["declarativeContent"],

后台脚本:

chrome.action.disable();

chrome.runtime.onInstalled.addListener(() => {
chrome.declarativeContent.onPageChanged.removeRules(() => {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: chrome.runtime.getManifest().host_permissions.map(h => {
const [, sub, host] = h.match(/:\/\/(\*\.)?([^/]+)/);
return new chrome.declarativeContent.PageStateMatcher({
pageUrl: sub ? {hostSuffix: '.' + host} : {hostEquals: host},
});
}),
actions: [new chrome.declarativeContent.ShowAction()],
}]);
});
});

为简单起见,我不限制 PageStateMatcher 的 schemes .

关于google-chrome-extension - 如果 list v3 中不允许当前选项卡 url,则防止弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69598656/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com