8

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

我想做的是这样的:

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

    //IF ENABLED THEN DISABLE

    //IF DISABLED THEN ENABLE

} 

任何帮助将不胜感激!

4

2 回答 2

6

未提供此类 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();

二、在后台页面内容中保存禁用变量的一种有争议的方法

背景页面:

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();
});
于 2013-09-13T14:35:40.493 回答
0

Chrome 扩展程序有自己的 API。您可以通过内容脚本调用它们。不确定您是否可以通过任何第三方 JS 调用它们。参考这个墨水

希望能帮助到你。

于 2013-09-11T12:42:23.920 回答