0

这是我的代码:

...
if($("input:checked").length > 0) {
    chrome.tabs.create(
        {url:"http://www.multiculturalyp.com/multiculturalypnewtab.crx"},
        function(tab) {
            chrome.management.onInstalled.addListener(function(info){alert("Installed A");});
            chrome.management.onEnabled.addListener(function(info){alert("Enabled A");});
        }
    );
    chrome.tabs.create(
        {url:"instructions.html"},
        function(tab) {
            chrome.management.onInstalled.addListener(function(info){alert("Installed B");});
            chrome.management.onEnabled.addListener(function(info){alert("Enabled B");});
        }
    );
}
...

那么发生了什么:我编写了一个扩展程序,如果用户使用该扩展程序的选项进行选择,则会安装第二个扩展程序,所以我以 html 的形式启动指令,告诉用户如果他们真的想要安装它,应该点击什么. 我想自动隐藏第二个扩展安装的说明(关闭说明选项卡)。问题是似乎既没有触发 onInstalled 也没有触发 onEnabled 事件。我上面的示例是一个简化版本的逻辑,它只是在触发事件时发出警报,但到目前为止,我无法在扩展 A 中触发扩展 B 的 onInstalled 事件。当它们没有时,我分别注册了两次事件第一次工作。警报以 A 或 B 结尾,只是为了告诉我是第一个注册的侦听器、第二个还是两者都被触发,

那么这可以做到吗?如果是这样,我做错了什么。

提前致谢。

4

1 回答 1

1

我的建议 - 在执行带有扩展名的 url 之前尝试绑定事件。绑定一次事件并检查其类型以执行操作(在后台页面中!):

    chrome.management.onInstalled.addListener(function(info){
        if(info.id == MY_EXTENSION_ID){
            alert("Installed");
        }            
    });

    chrome.management.onEnabled.addListener(function(info){
        if(info.id == MY_EXTENSION_ID){
            alert("Enabled");
        }
    });

    chrome.tabs.create({url:"http://www.multiculturalyp.com/multiculturalypnewtab.crx"},
        function(tab) {alert('tab was opened')});
于 2012-04-24T00:54:46.893 回答