这是我的代码:
...
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中触发。
那可以这样做吗?如果是这样,我做错了什么。
提前致谢。
答案 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')});