1
function Notify(header,content,image){
    var note = webkitNotifications.createNotification(image||"",header,content);
    note.show();
return note;}


var extensions = ["pbjhaapnigfhipfahcfkeakpcgkmnklc"];

function CheckReload(){
    for(var CN=0;CN<extensions.length;CN++){
        var id = extensions[CN];
        var ex = chrome.management.get(id);
        console.log("Checking",ex,"-",id);
        if(!ex.enabled){
            Notify("Extension reloaded!",ex.name+" was found crashed, and reloaded!");
            chrome.management.setEnabled(id,true);
        }
     }
}
setInterval(CheckReload,1000);

好的,所以我期待的是检查“扩展”数组中的扩展,如果它们没有被启用,它会创建一个通知说它不是,然后启用它。但是, chrome.management.get(id) 似乎返回未定义。

我期望输出如下:检查对象 - [id]

相反,我得到的是: Checking undefined - pbjhaapnigfhipfahcfkeakpcgkmnklc Uncaught TypeError: Cannot read property 'enabled' of undefined

我怎样才能解决这个问题?

4

2 回答 2

2

chrome 提供的大多数方法都不返回值,而是将回调函数作为参数,并使用所需的结果调用该函数。您应该将代码替换为

chrome.management.get(id, function(ex) {
    console.log("Checking",ex,"-",id);
    if(!ex.enabled){
        Notify("Extension reloaded!",ex.name+" was found crashed, and reloaded!");
        chrome.management.setEnabled(id,true);
    }
});

有关详细信息,请参阅http://developer.chrome.com/extensions/management.html#method-get

于 2013-08-26T16:44:59.550 回答
1

如果您从扩展程序运行代码,请确保您的扩展程序具有管理权限。

于 2014-01-10T10:09:54.833 回答