工作围绕扩展突发标签拒绝关闭Firefox Android

如何关闭Web扩展突起框窗口(单击扩展工具栏按钮时出现的小窗口)?在桌面上,您需要的只是一个简单的window.close()。由于Android上的有限的可用屏幕空间Firefox有弹出片,而不是popout-windows。用户可以通过按下后按钮,手动关闭它们,或切换到另一个选项卡来忽略这些选项卡。然而,他们毫不吝啬地难以统一地关闭。

更新 ():此文章适用于Android的Firefox,从版本57开始,包括69版。与较新的版本无关。

对于在用户完成一个操作之后,Web扩展突出窗口窗口很常见。虽然许多Web扩展为Android的Firefox工作,但用户通常必须自己手动关闭POPOUT-TABS。

您无法可靠地关闭Web Extension Popout-Tabsbrowser.tabs.remove()使用空白标签函数或替换它browser.tabs.update()。你也无法关闭它们window.close()因为浏览器不允许关闭JavaScript未打开的选项卡(有特定的异常允许在桌面上)。所以,你可以做什么?

要关闭“分机”选项卡,您可以利用POPOUT-TABS如何工作的实现详细信息。您将始终有一个以前活动的选项卡(Opener-Tab),它和突出选项卡被认为同时处于活动状态。通过重新激活活动选项卡browser.tabs.update(),您可以让浏览器切换回Opener-Tab并在进程中解雇POPOUT-TAB。

以下例子yabo亚博体育下载关闭()函数将关闭桌面上的popout-windows以及android上的popout-tab。该功能将使用window.close()桌面上的函数,还作为Android的反驳如果在未来版本的Firefox中的工作停止。

// spdx-license-identifier:cc0-1.0函数closepopout(){return promise.all([browser.runtime.getbrowserinfo(),browser.runtime.getplatforminfo()]).then(data => {if(数据[0] .name =='firefox'&&数据[1] .os =='Android'){return brower.tabs.update({Active:True});}})。最后(窗口.Close);}

必须从弹出片的范围内调用上述方法,就像它在桌面上一样。从Background脚本或内容脚本调用它在突出窗口上的POPOUT-TAB上会对POPOUT-TAB的影响很大。

该方法返回关闭选项卡的承诺。The method can sometimes be slower than normal if the opener-tab is a private tab (and I’ve got no idea why).This work-around will fail on Android (not on desktop) if you close the opener-tab before calling this method. You can, however, activate another specific tab by tab ID instead of re-activating the previously active tab. Like with private tabs, this can sometime be slow to execute on Android.

请注意,上述实现仅重新激活Android上的活动选项卡。您也可以随时称之为其他平台的工作代码。但是,如果您第一次移动窗口焦点然后关闭popout-窗口,您可能会在Windows上的地址字段中看到一个没有吸引力的白色闪光灯可能会吓坏窗口焦点,然后关闭popout-窗口。(典型的顺序是窗口结束,然后重置焦点;出于order of命令可以例如触发yabo亚博体育下载屏幕阅读器的冗余和混淆消息。)

对于Android的Firefox,未来可能看起来不太明亮,特别是Android的Firefox中的Web扩展。Mozilla将Firefox放在后燃烧器上的Android,而在焦点和Fenix等新的和更多令人兴奋的浏览器上工作。然而,这两个举措都不支持Web扩展。根据StatCounter的说法,Firefox在Android(如此仍然是大量的人)上雕刻了0,38%的网络浏览器市场份额。

我希望Mozilla不会放弃Android的扩展。作为一个人喜欢网络扩展,我不能说我对这个发展太高了。Firefox for Android有一个有限的Web扩展支持,但它比根本没有延伸更好。