我安装了一些 Chrome 扩展程序,在使用时需要打开/关闭。所有这些的默认状态都是关闭的。但是,当我访问某些特定网页时,我需要将它们全部打开(这些扩展程序中没有过滤页面的选项)。
由于这是一件苦差事,我正在尝试创建一个 Chrome 扩展程序,单击后即可简单地打开/关闭所有这些扩展程序。首先,这是否可以做到?如果是,我该怎么做?
举个例子,我想要自动化的扩展之一是 TunnelBear VPN(需要时通过我的扩展切换)
最佳答案
我自己正在使用这样的扩展切换器,所以我在这里复制了它的一些部分。
使用chrome.management API启用/禁用扩展。
使用 chrome.commands API 通过热键手动启用扩展 :
manifest.json,相关部分:
"commands": { "toggle": { "suggested_key": { "default": "Alt+T" }, "description": "Toggle extensions" } }, "background": { "scripts": ["background.js"], "persistent": false }, "permissions": ["commands", "management"]
背景.js:
var IDs = ['aasdkfjhkjdfhdfjkhdkfjhdkjfh']; chrome.commands.onCommand.addListener(function(command) { IDs.forEach(function(ID) { chrome.management.get(ID, function(oldState) { chrome.management.setEnabled(ID, !oldState.enabled); }); }); });
通过短扩展名获取 ID:
var IDs; chrome.management.getAll(function(info) { IDs = info.filter(function(extension) { return extension.shortName.match(/Name1|Name2|Name3/); }).map(function(extension) { return extension.id; }); );
或者,您可以定义两个热键来启用和禁用扩展。
导航到指定网址时自动启用扩展程序
某些扩展程序可能希望将其内容脚本注入(inject)
“document_start”
,所以我想我们需要 chrome.webNavigation.onBeforeNavigate 。尽管此事件不能保证实际导航会发生,但这可能是及时启用扩展的唯一方法。使用event filters要指定要激活的 URL,documentation 中列出了可能的条件。 .
// Enable the extension upon navigation to example.com chrome.webNavigation.onBeforeNavigate.addListener(beforeNavigate, { url: [{hostEquals: 'example.com'}, {urlContains: 'something'}] }); function beforeNavigate(details) { if (details.frameId === 0) { setState(true); } } function setState(newState) { chrome.management.setEnabled('dhgfhdgfjgjhdgfjdfhdjhfdjhf', newState); } // And let's disable the extensions when that site is closed chrome.tabs.onRemoved.addListener(function(tabId, info) { chrome.tabs.get(tabId, function(tab) { if (tab.url.indexOf('://example.com') > 0) { setState(false); } }); }); // In the actual code you may want to track chrome.tabs.onUpdated too // in order to detect in-tab navigation from example.com to another site
所需权限:
“webNavigation”
、“选项卡”
后台页面声明可以与#1中的相同。
关于javascript - Chrome 扩展程序的自动化功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39279019/