单击图标禁用扩展

时间:2015-10-08 14:44:10

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

我正在尝试编写Chrome扩展程序,只需单击浏览器操作图标即可将其禁用。我想为用户提供此选项,因为在触发警报时,扩展会引发javascript警报。问题是,即使清除了警报,我也会看到提醒警报。此外,我想用作开关的图标点击也没有按预期工作。

我已将manifest.js声明为manifest.json

中的后台javascript文件
"background": {
    "scripts": ["alert.js"],
    "persistent": true
},
"browser_action": {
    "default_icon": "images/green.png",
    "default_action": "popup.html",
    "default_title": "Toggle Productiwitty"
}

background.js

var ExtensionOn = true;

function SwitchOn(e)
{
    chrome.alarms.create("Alarm", {delayInMinutes: 0.1, periodInMinutes: 1} );
}

function SwitchOff(e) 
{
    chrome.alarms.clear("Alarm");
}

function showpopup()
{
    alert("Inside function showpopup");
    console.log("alert shown");
}

function click(e)
{
    if(ExtensionOn)
    {
        SwitchOff();
        console.log("switched off");
        chrome.browserAction.setBadgeText({text: "Off"});
    }
    else if(!ExtensionOn)
    {
        SwitchOn();
        console.log("switched on");
        chrome.browserAction.setBadgeText({text: "ON"});
        // Replace 15.0 with user selected time in minutes  
    }
    //Toggle ExtensionOn
    ExtensionOn = ~ ExtensionOn;
}

if(ExtensionOn)
{
    chrome.alarms.onAlarm.addListener(showpopup);
}
chrome.browserAction.onClicked.addListener(click);

我的" default_action":" popup.html"调用popup.js来创建警报

chrome.alarms.create("Alarm", {delayInMinutes: 0.1, periodInMinutes: 1} );

这个想法是,一旦加载了扩展程序,它应该每1分钟显示一次弹出窗口,如果单击该图标,则会暂时禁用该扩展程序。再次单击该图标时,将定期引发相同的警报。

2 个答案:

答案 0 :(得分:2)

ExtensionOn = true
> true
ExtensionOn = ~ ExtensionOn
> -2
Boolean(ExtensionOn)
> true

如果您想切换布尔值,请使用!,而不是~

if(ExtensionOn)
{
    chrome.alarms.onAlarm.addListener(showpopup);
}

首次加载页面时,只调用一次。如果此时扩展未打开,则不会添加侦听器,并且永远不会调用该函数。我建议将if测试移到showpopup

答案 1 :(得分:0)

来自https://developer.chrome.com/extensions/management#method-setEnabled

chrome.management.setEnabled(ExtId, true/false, callback)

但是我不确定禁用扩展程序是你真正想要做的, 一旦你禁用它,你必须转到chrome://扩展名并手动重新启用它。