可以在安装扩展B时使用chrome.management.onInstalled.addListener警报扩展A吗?

时间:2012-04-18 19:16:02

标签: event-handling google-chrome-extension

这是我的代码:

...
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事件都没有被触发。我上面的示例是逻辑的简化版本,它只是在事件被触发时发出警报,但到目前为止,我无法获得扩展B的onInstalled事件在扩展A中被触发。我在他们没有注册事件时每次注册事件两次。 #39;第一次工作。警报以A或B结尾,只是为了告诉我第一个注册的监听器,第二个或两个是否被触发,但是应该在扩展A中触发。

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

    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')});