我正在使用notifications.jsm从Downloads.jsm提供下载通知。以下代码在notifications.jsm中不正确:
unregisterHandler: function(key, handler) {
let i = _handlersMap[key].indexOf(handler);
if (i > -1) {
_handlersMap.splice(i, 1);
}
},
_handlersMap是一个对象,因此splice不是函数。
另外,也许是因为unregisterHandler方法不正确,有时候卸载我的插件并在重新安装的插件中创建一个新的Notification我在observe方法中得到了死对象。 我的代码为每个新通知创建一个单独的处理程序,每个新下载的handlerKey加1。对于不同的观察事件类型,代码类似,重复密钥的处理程序并调用相应的方法。由于我为每个通知注册了一个不同的处理程序,因此该键只应该有一个处理程序,但事实并非如此,前一个插件中有来自新插件的相同键的死对象。当然这种行为是不正确的。
请有人看看这个以及我对firefox sdk所做的其他帖子。我只是认为微软可以提供非文档,事实上这更糟糕,因为文档是无意义的,并且提供的代码有错误。
此致