如何在后台服务工作线程中导入 Jquery - Manifest V3 - Chrome 扩展

spa*_*kle 13 google-chrome-extension

  "manifest_version": 3,
  "background": {
    "service_worker": "background.js"
  }
Run Code Online (Sandbox Code Playgroud)

我需要在background.js 中使用Jquery。我无法在清单中添加 jquery.min.js,因为使用新的升级 v3,我无法在 service_worker 中声明多个 JS。我该如何解决?

背景.js

$.ajax({
   type: "POST",
   url: "https://wwww",
   data: {text: "xxx"}
});
Run Code Online (Sandbox Code Playgroud)

wOx*_*xOm 12

jQuery 是基于 DOM 的,因此它的 $.ajax 或 $.put 或 $.get 不会在 Service Worker 中运行,因为没有 DOM/文档/窗口,因此没有这些方法使用的 XMLHttpRequest。jQuery 的其他基于 DOM 的功能在 Service Worker 中也无法使用。

解决方案#1 是使用fetch()
如果您需要更多功能(例如 onprogress),还有基于 fetch 的库。

解决方案#2 是在 Chrome 109+ 中的屏幕外jQuery.ajax文档内使用。

  • 我添加了“importScripts('js/jquery.js')”,但出现错误“服务工作人员注册失败” (3认同)