javascript - 在浏览器扩展中实现 web worker - Uncaught ReferenceError: importScripts is not defined
问题描述
我正在尝试在我的 vue 网络扩展中实现一个网络工作者。要开始实现代码,我已经编写了这几行代码,但是我从扩展名中得到了这个错误:Uncaught ReferenceError: importScripts is not defined
,或者这个其他错误Uncaught ReferenceError: browser is not defined
,第二个错误是由 worker.js 文件引起的。import
我需要使用在 vue 配置文件字段中声明的不可用的脚本,externals
并且通常在扩展名中可以正常工作,这就是我使用importScripts()
.
由于我需要一个用户在单击按钮后启动 Web Worker 的工作流程,因此我使用消息传递系统告诉后台脚本启动 Web Worker,这里是代码
清单.json
{
"manifest_version": 2,
"name": "__MSG_extName__",
"description": "__MSG_extDescription__",
"default_locale": "en",
"permissions": [
"https://*",
"tabs",
"activeTab",
"webRequest"
],
"icons": {
"16": "icons/16.png",
"48": "icons/48.png",
"128": "icons/128.png"
},
"background": {
"scripts": [
"js/worker.js",
"js/background.js"
],
"persistent": true
},
"page_action": {}
}
背景.js
browser.runtime.onMessage.addListener( (message) => {
if( message.status === 'startDownload' ){
const worker = new Worker(browser.runtime.getURL('js/worker.js'))
console.log(worker)
worker.postMessage(['hello'])
}
})
worker.js
importScripts(browser.runtime.getURL('./assets/m3u8.js'))
onmessage = (msg) => {
console.log('message from background script!', msg)
}
popup.js 文件
mounted() {
browser.runtime.sendMessage({status: 'startDownload'})
}
代码有问题,我怎样才能使事情正常工作?
解决方案
推荐阅读
- javascript - JavaScript - 从多个数组填充对象构造函数
- sql - 无法使用 liquibase 将类型日期转换为整数
- html - 如何让 jquery 自动完成以仅显示以键入查询开头的电子邮件地址?
- haproxy - 添加 uuid4 标头 Haproxy
- reactjs - 在 React 钩子中,如何在我想要更改的状态下引用对象的通用属性?
- azure - Azure Monitor 警报正在为 Functions 应用发送失败计数为 1 的错误失败电子邮件通知
- python - 键入禁用 pylint 无效名称
- javascript - 分组两个数组(特殊条件)- Javascript
- java - 用resteasy提出请求
- c# - 将数据从 C# 传递到 OpenTK FS