我正在尝试将现有的firefox插件代码移植到新的多进程架构中。在我现有的代码中,我可以使用以下代码在addon install event
上启动新标签:
function install(data, aReason) {
if (aReason == ADDON_INSTALL) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
mainWindow.gBrowser.addTab('http://www.mywebsite.org/install-success-page.html');
}
if (aReason == ADDON_UPGRADE) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
mainWindow.gBrowser.addTab('http://www.mywebsite.org/update-success-page.html');
}
}
在对bootstrap.js进行更改以使其成为multiprocess firefox
兼容之后(使用其他扩展程序代码的帮助),插件按预期加载和运行,但上面的代码无法加载新选项卡,并且没有错误显示在控制台!!!
答案 0 :(得分:1)
这应该有效:
var Cu = Components.utils;
var { require } = Cu.import(resource://gre/modules/Services.jsm", {});
const tabs = require("sdk/tabs");
tabs.open(url);
此外,与未来的平台代码相比,这种情况不太可能中断。