4

Chrome 版本为 33.0.1750.154 m。

根据http://developer.chrome.com/extensions/alarms#method-clear的文档,clear 方法的签名是:chrome.alarms.clear(string name, function callback)。

我的扩展中有一个仍在开发中的警报:

chrome.alarms.get('refreshForNotification', function(alarm){
    console.log('>>>' + JSON.stringify(alarm));
});
>>>{"name":"refreshForNotification","periodInMinutes":2,"scheduledTime":1395892890429.581} 

现在,当我尝试使用以下命令清除此警报时:

chrome.alarms.clear('refreshForNotification', function(wasCleared){
    console.log('>>> wasCleared: ' + wasCleared);
});

我收到以下错误:

Error: Invocation of form alarms.clear(string, function) doesn't match definition alarms.clear(optional string name)
 message: "Invocation of form alarms.clear(string, function) doesn't match definition alarms.clear(optional string name)"

有人可以指导/指出我这里出了什么问题吗?根据文档,警报 api 从 chrome 22 开始是稳定的。如果我的代码没有错,那么要么文档太旧,要么文档太新,并且我的 chrome 上的当前行为将来会发生变化。

任何提示/帮助都会很有用。

谢谢

4

2 回答 2

3

chrome.alarms.clear上周在http://crrev.com/258526 (Chrome 35.0.1903.0+)中添加了可选的回调。在线文档显示了最新(开发)版本的可用功能,而不是稳定版本。

Chrome 35 目前在开发者频道上可用,所以如果你真的想使用这个功能,那么你可以从这里安装 Chrome 。

于 2014-03-29T21:49:00.370 回答
0

这在 35.0.1905.3 上对我来说很好:

清单.json

{
  "name": "22692926 Example",
  "description": "alarms",
  "version": "1.0",
  "manifest_version": 2,
  "permissions": ["alarms"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
}

背景.js

var NAME = "foo";
var alarmInfo = {
  'delayInMinutes': 1
};

chrome.alarms.create(NAME, alarmInfo);
chrome.alarms.get(NAME, function(a) { console.log(a); });
chrome.alarms.clear(NAME, function(wasCleared) { console.log(wasCleared); });

输出

Object {name: "foo", ...}
true

我知道这并不能直接回答您的问题,但也许您可以制作一个完全复制此代码的测试扩展,如果它有效,您可以将其与您的进行比较并找出不同之处。

于 2014-03-28T19:18:02.020 回答