Webextension Firefox 警报未触发
Webextension Firefox alarm not firing
我是编写附加组件的新手。我正在尝试在按下按钮后 运行 X 分钟获得一个功能。我正在关注 this MDN reference, and comparing to this example addon,但看不到我的错误。
到目前为止,我有一个 example.js
看起来像:
var ok = document.createElement('button');
var okText = document.createTextNode("OK");
ok.appendChild(okText);
ok.onclick = startTimer;
document.body.appendChild(ok)
function startTimer(event) {
event.preventDefault();
console.log('click!')
browser.alarms.clearAll();
browser.alarms.create("Remind", {delayInMinutes: 1});
return false;
}
browser.alarms.onAlarm.addListener(ring);
function ring(alarmInfo) {
console.log("RING!");
}
到目前为止,我在日志中收到了 "click" 通知,但是 "RING!" 从未发生过,而我希望它会在 1 分钟后出现。
更多信息,根据评论:
我已经编写了一个插件,并且在插件的目录中通过 运行ning web-ext run
运行ning 它。 manifest.json
是:
{
"manifest_version": 2,
"name": "Example",
"version": "0.1",
"description": "Example",
"icons": {
"48": "icons/example-48.png",
"96": "icons/example-96.png" },
"content_scripts": [
{
"matches": ["*://*.google.com/*"],
"js": ["example.js"],
"css": ["example.css"]
} ],
"permissions": ["alarms"],
"run_at": "document_start"
}
浏览器控制台显示了我所在站点的一堆输出(这里是 google.com),example.js 的唯一输出是 click! example.js:57:2
问题在于内容脚本无法访问与后台脚本一样多的 API(请参阅 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts)。具体来说,他们无法访问 alarm
API.
但是,他们可以使用 setTimeout
或 setDelay
,或者将消息发送到单独的后台脚本来处理警报。
我是编写附加组件的新手。我正在尝试在按下按钮后 运行 X 分钟获得一个功能。我正在关注 this MDN reference, and comparing to this example addon,但看不到我的错误。
到目前为止,我有一个 example.js
看起来像:
var ok = document.createElement('button');
var okText = document.createTextNode("OK");
ok.appendChild(okText);
ok.onclick = startTimer;
document.body.appendChild(ok)
function startTimer(event) {
event.preventDefault();
console.log('click!')
browser.alarms.clearAll();
browser.alarms.create("Remind", {delayInMinutes: 1});
return false;
}
browser.alarms.onAlarm.addListener(ring);
function ring(alarmInfo) {
console.log("RING!");
}
到目前为止,我在日志中收到了 "click" 通知,但是 "RING!" 从未发生过,而我希望它会在 1 分钟后出现。
更多信息,根据评论:
我已经编写了一个插件,并且在插件的目录中通过 运行ning web-ext run
运行ning 它。 manifest.json
是:
{
"manifest_version": 2,
"name": "Example",
"version": "0.1",
"description": "Example",
"icons": {
"48": "icons/example-48.png",
"96": "icons/example-96.png" },
"content_scripts": [
{
"matches": ["*://*.google.com/*"],
"js": ["example.js"],
"css": ["example.css"]
} ],
"permissions": ["alarms"],
"run_at": "document_start"
}
浏览器控制台显示了我所在站点的一堆输出(这里是 google.com),example.js 的唯一输出是 click! example.js:57:2
问题在于内容脚本无法访问与后台脚本一样多的 API(请参阅 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts)。具体来说,他们无法访问 alarm
API.
但是,他们可以使用 setTimeout
或 setDelay
,或者将消息发送到单独的后台脚本来处理警报。