Webextension Firefox警报未触发

时间:2017-02-27 22:29:48

标签: javascript alarm firefox-webextensions

我刚开始写附加组件。我正在尝试按下按钮后运行X分钟的功能。我正在关注this MDN reference,并与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!");
}

到目前为止,我在日志中收到“点击”通知,但是“RING!”永远不会发生,而我希望看到它在1分钟后出现。

根据评论,还有一些信息: 我已经编写了一个插件,并通过在附加组件目录中运行web-ext run来运行它。 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

1 个答案:

答案 0 :(得分:1)

问题是内容脚本无法访问与后台脚本一样多的API(请参阅https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts)。具体而言,他们无法访问alarm API。

但是,他们可以使用setTimeoutsetDelay,或者将消息发送到单独的后台脚本来处理警报。