我正在尝试编写一个Chrome扩展程序,只需单击浏览器操作图标即可将其禁用。我想为用户提供此选项,因为扩展名在触发警报时会引发JavaScript警报。问题是,即使清除了警报后,我仍然看到警报正在发出。另外,我想用作开关的图标单击无法正常工作。
我已经在manifest.json中将background.js声明为我的背景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分钟显示一次弹出窗口,如果您单击该图标,该扩展将暂时被禁用。再次单击该图标时,将定期发出相同的警报。
最佳答案
ExtensionOn = true
> true
ExtensionOn = ~ ExtensionOn
> -2
Boolean(ExtensionOn)
> true
如果要切换布尔值,请使用
!
,而不是~
。if(ExtensionOn)
{
chrome.alarms.onAlarm.addListener(showpopup);
}
第一次加载页面时,仅调用一次。如果该扩展当时没有打开,则不会添加监听器,并且永远不会调用该函数。我建议将
if
测试移到showpopup
中。关于javascript - 单击图标禁用扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33019030/