我正在尝试编写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分钟显示一次弹出窗口,如果单击该图标,则会暂时禁用该扩展程序。再次单击该图标时,将定期引发相同的警报。
答案 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://扩展名并手动重新启用它。