1

我正在使用侧边栏开发 WebExtension。

当侧边栏打开时,扩展程序会在当前选项卡上执行一些操作。当它关闭时,我想恢复这些操作。

这可能吗?我没有看到像browser.sidebarAction.addEventListener.

4

2 回答 2

3

我在以下方面改编了 GnxR 的想法:

extension/page/sidebar.html

<!DOCTYPE html>
<html>
    <body>
        <div id="panel"></div>
        <script src="static.js"></script>
    </body>
</html>

extension/page/static.js

window.addEventListener('beforeunload', (event) => {
  console.log('Sidebar will be closed!');
  // Do stuff
});
window.addEventListener('pagehide', (event) => {
  console.log('Sidebar is hidden!');
  // Do stuff
});
window.addEventListener('unload', (event) => {
  console.log('Sidebar is unloaded!');
  // Do stuff
});

关闭扩展程序时(从交叉栏和以编程方式),我在浏览器控制台中得到以下信息:

Sidebar is hiding! static.js:6:3
Sidebar is unloaded! static.js:10:3 

因此,似乎pagehideunload事件都可以使用,但beforeunload永远不会触发。

于 2019-04-12T12:27:18.690 回答
1

The sidebar is an alsmot-regular independent webpage, in which you can listen to usual JS events. In order to know when the sidebar is closing, you can use beforeunload in the sidebar's JavaScript:

window.addEventListener('beforeunload', (event) => {
  console.log('Sidebar is closing!');
  // Do stuff
});
于 2018-06-25T09:56:24.943 回答