Прослушайте закрытие боковой панели Firefox WebExtension - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над WebExtension с использованием боковой панели.

Когда боковая панель открыта, расширение выполняет некоторые операции на текущей вкладке. Когда он будет закрыт, я хочу отменить эти операции.

Возможно ли это? Я не видел такие методы, как browser.sidebarAction.addEventListener.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Я адаптировал идею 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 

Поэтому кажется, что можно использовать как события pagehide, так и unload, но beforeunload никогда не запускается.

0 голосов
/ 25 июня 2018

Боковая панель - это обычная независимая веб-страница, на которой вы можете прослушивать обычные события JS. Чтобы узнать, когда боковая панель закрывается, вы можете использовать beforeunload в JavaScript боковой панели:

window.addEventListener('beforeunload', (event) => {
  console.log('Sidebar is closing!');
  // Do stuff
});
...