【发布时间】:2015-10-08 14:44:09
【问题描述】:
我正在尝试编写一个 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 分钟显示一个弹出窗口,如果您单击该图标,该扩展程序将被暂时禁用。再次单击该图标时,将定期发出相同的警报。
【问题讨论】:
-
“禁用扩展”不同于“单击浏览器操作来切换行为”。
-
@Teepeemm 从技术上讲,切换功能正在禁用它。当您想要关闭扩展程序时,在开发人员选项中,取消选中启用按钮。所以启用的反义词是禁用。建议一个更好、更相关的标题,我会编辑我的帖子:)
-
你为什么要使用持久的背景页面?
-
chrome://extensions中的复选框将启用或禁用扩展。在浏览器操作上具有二进制行为是完全不同的。如果你仔细想想,你并不是真的试图“禁用”任何东西。您真的希望浏览器操作有两种不同的结果。碰巧这些结果之一没有做任何事情。因此,我将其称为与“禁用”扩展程序不同的事情。 -
@DanielHerr:活动页面在这里更有意义吗?我是 Chrome 扩展程序开发的新手。
标签: javascript google-chrome google-chrome-extension