Firefox addon 如何在卸载firefox插件时在浏览器中打开页面

Firefox addon 如何在卸载firefox插件时在浏览器中打开页面,firefox-addon,Firefox Addon,我想在用户卸载加载项时打开链接,因此我必须在哪个事件下编写代码 如果有人知道这件事,请帮帮我 目前这是我卸载时正在做的事情。但是gBrowser.addTab(网站+'uninstalled=true&token='+uniqueguid)在这里不起作用 var卸载观察员={ _卸载:false, 观察:功能(主题、主题、数据){ //==在此处写入代码,以便在卸载时删除文件 //警报(“卸载时间删除文件”); var Filename=“webmail”; //删除所有模板文件。 试一试{ v

我想在用户卸载加载项时打开链接,因此我必须在哪个事件下编写代码

如果有人知道这件事,请帮帮我

目前这是我卸载时正在做的事情。但是
gBrowser.addTab(网站+'uninstalled=true&token='+uniqueguid)在这里不起作用

var卸载观察员={
_卸载:false,
观察:功能(主题、主题、数据){
//==在此处写入代码,以便在卸载时删除文件
//警报(“卸载时间删除文件”);
var Filename=“webmail”;
//删除所有模板文件。
试一试{
var pref=Components.classes[“@mozilla.org/preferences service;1”].getService(Components.interfaces.nsIPrefBranch);
var finished=“”;
pref.setBoolPref(“myextension.install.just_installed”,false);
}
捕获(e){}
gBrowser.addTab(网站+'uninstalled=true&token='+uniqueguid);
var file=Components.classes[“@mozilla.org/file/local;1”].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(Components.classes[“@mozilla.org/file/directory_service;1”].getService(Components.interfaces.nsIProperties).get(“ProfD”,Components.interfaces.nsfile.path+”\\DefaultTemplate.txt);
if(file.exists()==true)
{   
var aFile=Components.classes[“@mozilla.org/file/local;1”].createInstance();
if(组件的文件instanceof.interfaces.nsILocalFile)
{                            
aFile.initWithPath(Components.classes[“@mozilla.org/file/directory_service;1”].getService(Components.interfaces.nsIProperties).get(“ProfD”,Components.interfaces.nsfile.path+”\\DefaultTemplate.txt);
aFile.remove(false);
}
}           
//=======       
如果(主题==“请求的em操作”){
subject.QueryInterface(Components.interfaces.nsIUpdateItem);
if(subject.id==我的扩展名)
{
如果(数据==“卸载的项目”)
{
//==卸载时删除文件
//警报(“未汇总时”);
//===========   
data=“项目取消操作”;
这是.\u uninstall=true;
}
如果(数据==“禁用”)
{
//警报(“不允许您禁用SysLocker。”);
这是.\u uninstall=true;
}
else if(数据==“项目取消操作”)
{
这是.\u uninstall=false;
}
}
} 
else if(主题=“退出已授予的应用程序”)
{
data=“项目取消操作”;
如果(此._卸载)
{     
//此处的代码用于删除注册表
}
这个。取消注册();
}
},
寄存器:函数(){
var observerService=
Components.classes[“@mozilla.org/observer service;1”]。
getService(组件、接口、nsIObserverService);
addObserver(此“请求的em操作”为false);
addObserver(此“已授予退出应用程序”,false);
},
取消注册:函数(){
var observerService=
Components.classes[“@mozilla.org/observer service;1”]。
getService(组件、接口、nsIObserverService);
removeObserver(此为“请求的em操作”);
removeObserver(此为“已授予退出应用程序”);
}
}

谢谢

我不认为em action requested主题会发布给观察家,直到扩展被实际卸载,这是在重启时发生的(假设它不是一个无重启的扩展)。您希望新选项卡何时出现?我会尝试在触发卸载主题时设置一个pref,并在启动时检查该pref。如果有,您可以显示选项卡并删除前缀。

0)这是什么类型的扩展?我认为这是一个需要重新启动的常规扩展

1) 根据,请求的
em操作
通知在Firefox 4+中被替换为不同的通知,您是使用Firefox 4还是3.6进行测试


2) gBrowser.addTab“不在这里工作”到底是什么意思?代码是否达到了这一点?您是否在中收到任何消息(有关设置提示,请参阅该页)?如果将代码放在XPCOM组件中(这是正确的),则首先必须获取对浏览器窗口的引用。请参阅。

您认为即使卸载工具栏,我也可以执行代码吗?如果是这样的话。。那么你能给我提供一些链接吗?好的观点::-)您是Firefox4+的扩展吗?如果是这样,那么附加侦听器API已经完全更改(请参阅);似乎同意我的看法。谢谢Nickolay,我能够获得卸载事件,但我的问题是我无法在这里执行gBrowser.addTab。如果您发现任何与此相关的内容,请帮助我。@Bhavik Goyal:看起来您没有看到我(2)项下的问题和建议。我可以澄清一下吗?代码已经到了那个点,但似乎没有对这个语句执行任何操作,而如果我们编写代码来显示警报,那么警报将在该点之前和之后显示。我也尝试过使用一些API调用请求,但也没有得到。此外,我还尝试使用openUILink(网站+“unistall=true&token=“+encodeURIComponent(uniqueguid)”,“a”,false,true);这是utilityoverlay的功能。但这也不起作用。Thankso这段代码是在覆盖层中运行的吗chrome://browser/content/browser.xul? 这不是一个好的解决方案,因为代码将在每个窗口中运行| gBrowser.addTab(“在该上下文中工作吗?如果您通过setTimeout或从顶层脚本运行它会怎么样?您没有说任何关于错误控制台的内容。您是否设置了它并检查了它的消息?”?