我正在开发的Chrome扩展程序在每个网站页面上插入内容脚本和CSS。但是,用户可能有某些页面不希望该扩展程序运行,因此如果我可以将浏览器动作设置为基本的开/关切换,那将非常好。
我想做的事情类似于这样:
chrome.browserAction.onClicked.addListener(function(tab) {
//IF ENABLED THEN DISABLE
//IF DISABLED THEN ENABLE
}
任何帮助都将不胜感激!
chrome.browserAction.onClicked.addListener(function(tab) {
//IF ENABLED THEN DISABLE
//IF DISABLED THEN ENABLE
}
没有提供这样的API。但是有两种可能的解决方法:
I. 您可以使用“禁用”标志变量,并从您的后台页面更新它。
后台页面:
function disableExtension(disabled)
{
chrome.windows.getAll({populate : true}, function (window_list)
{
for (var i = 0; i < window_list.length; ++i)
{
var window = window_list[i];
for (var j = 0; j < window.tabs.length; ++j)
{
var tab = window.tabs[j];
if (checkContentScriptExists(tab))
{
chrome.tabs.executeScript(tab.id, {code : "disabled = " + disabled + ";"}, allTabs: true)
}
}
}
// No matching url found. Open it in the new tab
chrome.tabs.create({ url : url, selected: true });
});
}
内容脚本应该在运行之前检查条件。
if (!disabled) doSomething();
II. 一种备受争议的方法,用于保存背景页面内容中的禁用变量
背景页面:
function disableExtension(disabled)
{
global.disabled = disabled;
}
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.msg == "getDisabled") {
sendResponse({disabled: global.disabled});
return true;
}
});
在执行之前,内容脚本应查询当前禁用状态。
chrome.runtime.sendMessage({msg: "getDisabled"}, function(response) {
if (!response.disabled) doSomething();
});
Chrome扩展程序有自己的API。您可以通过内容脚本调用它们。不确定是否可以通过任何第三方JS调用它们。请参考this ink。
希望能帮到您。