我们为Chrome,Firefox和Safari创建了扩展程序。我们想在卸载扩展程序时打开一个新选项卡。我找到了Chrome的这个代码,但它可以在Safari和Firefox中实现吗?
switch (platform) {
case 'chrome':
try {
chrome.runtime.setUninstallURL(uninstall_url);
} catch(e) {
console.error(e);
}
break;
}
答案 0 :(得分:2)
代替manifest.json
Safari扩展程序使用Info.plist
,uninstall
通常使用ExtensionBuilder生成。正如您从提供的屏幕截图中看到的那样,没有' uninstallURL'是可用的。我建议在全局页面中测试beforeUnload listener,但这可能也会在更新,浏览器关闭等其他事件中触发。
对于Firefox,这完全取决于您的加载项所基于的实际API。如果您使用Addon SDK或创建legacy XUL overlay extension,可能会运气不好。但是,Restartless bootstrapped extensions使用的是低级API,bootstrap.js中的function uninstall(data, reason) {
if (reason === ADDON_UNINSTALL) {
let win = Services.wm.getMostRecentWindow('navigator:browser');
win.gBrowser.selectedTab = win.gBrowser.addTab(url);
}
}
函数会收到一个原因参数:
states
好消息是新的WebExtensions API即将推出Firefox。它与Chrome API基本相同。请参阅relevant bug
答案 1 :(得分:2)
从addon sdk你可以使用这个https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Listening_for_load_and_unload
这将向您展示如何监听加载和卸载,并从此处检测加载/卸载解决方案的原因 - https://stackoverflow.com/a/31497334/1828637