setUninstallURL - in Safari and Firefox?



我们为Chrome、Firefox和Safari创建了扩展。我们希望在卸载扩展时打开一个新的选项卡。我为Chrome找到了这个代码,但在Safari和Firefox中可以做到吗?

switch (platform) {
    case 'chrome':
        try {
            chrome.runtime.setUninstallURL(uninstall_url);
        } catch(e) {
            console.error(e);
        }
        break;
}

Safari扩展使用Info.plist来代替manifest.json,后者通常由ExtensionBuilder生成。您可以从提供的屏幕截图中看到,没有"uninstallURL"可用。我建议在全局页面中测试beforeUnload侦听器,但这可能也会在其他事件中触发,如更新、浏览器关闭等。

至于Firefox,这完全取决于您的插件所基于的实际API。如果您使用了Addon SDK或创建了遗留的XUL覆盖扩展,您可能会失去运气。然而,Restartless引导的扩展使用低级API,bootstrap.js中的uninstall函数接收到一个原因参数:

function uninstall(data, reason) {
    if (reason === ADDON_UNINSTALL) {
        let win = Services.wm.getMostRecentWindow('navigator:browser');
        win.gBrowser.selectedTab = win.gBrowser.addTab(url);
    }
}

好消息是新的WebExtensions API即将登陆Firefox。它与Chrome API基本相同。请参阅相关错误

从addon sdk中,您可以使用https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Listening_for_load_and_unload

它向您展示了如何侦听加载和卸载并检测加载/卸载的原因。解决方案如下-https://stackoverflow.com/a/31497334/1828637

最新更新