有没有办法检测Chrome侧面板是否打开?

xtupzzrd  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(268)

我有一个扩展,点击当前页面的某个元素,就可以在内置的Chrome侧边栏中生成内容。我还使用了一个内容脚本来为单击的元素添加一些突出显示,以便可以将其保存在上下文中。但是,在关闭侧面板时,我想删除此突出显示,因为它不再相关。但我似乎找不到侧面板的“x”按钮的onClose事件,该事件将在面板不可见时触发。
搜索文档。我找到了Chrome.runtime.onSuspend,但在我的例子中似乎不起作用--我试图从我的contentscript调用它,但在那个上下文中,chrome.runtime中没有识别出这个事件。

ftf50wuq

ftf50wuq1#

侧面板没有关闭事件,但使用一个小技巧可以检测侧面板是否关闭:
您可以通过打开侧面板和背景脚本之间的永久连接来模拟事件。如果侧面板关闭,此连接将触发onDisconnect事件。
sidepanel.js:

chrome.runtime.connect({ name: 'mySidepanel' });

后台脚本可以添加侦听器并相应地做出React。
background.js:

chrome.runtime.onConnect.addListener(function (port) {
  if (port.name === 'mySidepanel') {
    port.onDisconnect.addListener(async () => {
      console.log('Sidepanel closed.');
    });
  }
});

相关问题