javascript - 暂停扩展后如何简单地在内容脚本上运行侦听器
问题描述
所以,我做了一个小的 Firefox 扩展,有一个内容脚本,没有后台脚本,如果扩展被禁用或卸载,我一直试图让脚本做一些清理。使用后台脚本可以通过添加侦听器函数来完成browser.runtime.onSuspend.addListener(<name of function>);
,但是内容脚本无法访问 API 的该部分(据我所知),因此让每个单独运行的内容脚本都进行自己的清理不能这样做。什么是解决此问题的好方法。
这是我正在尝试做的一个最小示例,假设我有一个扩展程序,旨在使 youtube 评论在页面运行时不可见,并在扩展程序被禁用或卸载时将其恢复。这是我(显然没有工作)实现这一目标的尝试。
manifest.json
:
{
"name": "Minimal Example",
"version": "0.9",
"description": "unimportant",
"content_scripts": [
{
"matches": ["https://www.youtube.com/*"],
"js": ["styles.js"]
}
],
"manifest_version": 2
}
和styles.js
:
document.getElementsByTagName("ytd-comments")[0].style.visibility = "hidden";
function handleSuspend() {
console.log("Suspending extension...");
document.getElementsByTagName("ytd-comments")[0].style.visibility = "visible";
}
browser.runtime.onSuspend.addListener(handleSuspend);
这确实会使评论部分消失,但不会在禁用或卸载扩展程序后重新出现。因为脚本似乎无法使用这个特定的监听器。
怎样才能达到预期的结果,我是否必须设置一个后台脚本来监听这个事件,然后以某种方式向内容脚本发送消息以执行它应该做的事情(我对 WebExtensions API 作为一个整体不太熟悉老实说)?还有比这更简单的方法吗?
解决方案
推荐阅读
- typescript - 有人可以帮我自动化多用户用例在量角器中吗?
- java - Appium测试无法识别Opencv4nodejs
- python - ModuleNotFoundError:Windows 的 PyCharm 中没有名为“folderB”的模块(附加项目)
- wpf - WPF .NET Core 3.1 的网络摄像头
- vue.js - Vuex 不会将 isLogin 变量更改为 false()
- flutter - Flutter IOS中的平台不允许不安全的HTTP
- javascript - Javascript:如果有条件,函数不在另一个函数内部运行
- mysql - 气流:所有任务已完成,但 dag 状态正在运行
- wordpress - 如何修复错误'404 Not Found The resource requested could not be found on this server'
- reactjs - 如何从 api 遍历对象列表并将其呈现到 jsx 页面 React 功能组件