首页 > 解决方案 > 在浏览器扩展中实现 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'})
}    

代码有问题,我怎样才能使事情正常工作?

标签: javascriptvue.jsgoogle-chrome-extensionweb-workerbrowser-extension

解决方案


推荐阅读