通过浏览器操作/图标禁用/启用Chrome扩展程序

时间:2013-09-11 12:14:46

标签: javascript google-chrome google-chrome-extension

我正在开发的chrome扩展程序将内容脚本和css插入到网站的每个页面上。但是,用户可能有一个或多个他或她不希望扩展程序运行的页面,因此如果我可以将浏览器操作设置为基本上打开/关闭切换,那将会很棒。

我想做的是这样的事情:

chrome.browserAction.onClicked.addListener(function(tab) {

    //IF ENABLED THEN DISABLE

    //IF DISABLED THEN ENABLE

} 

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:5)

未提供此类API。但是存在两种可能的解决方法:

予。您可以使用“disabled”标志变量并从后台页面更新它。

背景页面:

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: "getDiasbled"}, function(response) {
   if (!response.disabled) doSomething();
});

答案 1 :(得分:0)

Chrome扩展程序拥有自己的API。您可以通过内容脚本调用它们。不确定你是否可以通过任何第三方JS调用它们。请参阅this ink

希望它有所帮助。