允许在 chrome 扩展内容脚本中使用 jQuery

Allowing use of jQuery in chrome extension content script

我写了一个 Chrome 扩展,它修改了外部网站的外观(我无法在服务器端访问)。 content.js 文件写在 jQuery 中,只要我在扩展文件夹的根目录中保留 jQuery API 的副本并声明文件的副本,它就可以正常工作扩展程序 manifest.json 文件中 "content_scripts": "matches": 下的名称。但是应该没有必要使用本地文件,不是吗?我不能 link 改为 https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js 吗?在this post中,建议在"content_scripts": "matches":下添加link,但这样不行。

我认为这将是一个非常基本的问题,答案将是显而易见的并且受到高度赞扬,但我在这里找不到类似的东西。对不起 如果是因为我胖

TL;DR:下载库,在您的扩展中分发它,然后像在您的扩展中使用任何其他脚本一样使用它。

原因:

加载外部脚本通常不是一个好主意,即使它是像 jQuery 这样的知名库。

  1. 特权上下文中的扩展 运行。当然,内容脚本受到严格限制,但它们仍然可以通过消息传递访问其后台脚本,如果远程代码被黑客入侵或重定向到恶意服务器或代理,可能会造成相当大的损害。

  2. Manifest V3 扩展中的远程代码will be forbidden soon,可能在一年左右,最终它也可能对 Manifest V2 扩展强制执行。

  3. 当 Chrome 定期检查本地安装的扩展以确保其文件未被 OS 中的某些恶意软件修改时,远程代码无法验证只是由于磁盘故障导致 data/files.

  4. 丢失
  5. 如果加载的代码从浏览器缓存中被逐出,将无法离线工作。

备注:

  • 如果您担心扩展大小,并且只有几个(几十个)调用 jQuery,请考虑完全不使用 jQuery。
  • 如果您担心自动 updates/fixes 应用于 jQuery 那么请采用更负责任的方法:仅在测试并确保一切按预期工作后包含更新的库。