Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

如何在 Manifest V3 中使用 Web 扩展注入全局

Posted on 2022-08-08

对于那些不熟悉 Web 扩展开发世界的人来说,Chrome 正在酝酿一场风暴。 Google 将停止对清单版本 2 的支持,这是绝大多数网络扩展所使用的。 Manifest 版本 3 有很多变化,但最大的变化是从持久性后台脚本转移到服务工作者。这……是……一个……巨大的……变化。

从清单版本 2 到版本 3 的更改包括:

  • 从持久的后台脚本到可能在 5 分钟后死亡的服务工作者
  • 不使用服务工作者的<iframe>元素或其他 DOM API
  • 所有的 API 都变成了基于 Promise 的
  • 从 CSP 角度对内容的限制

Web 扩展经常使用的一个功能是在每个新页面加载时执行脚本。对于像 MetaMask 这样的网络扩展,我们需要提供一个全局的window.ethereum供 dApp 使用。那么我们如何使用清单版本 3 做到这一点呢?

从 Chrome v102 开始,开发人员可以为内容脚本定义一个值为isolated或main (在页面中)的world属性。虽然开发人员应该在扩展的manifest.json文件中定义content_scripts ,但main值仅在您以编程方式从 service worker 定义时才有效(由于 Chrome 错误):

  
等待 chrome.scripting.registerContentScripts([  
  {  
    id: '页面内',  
    匹配:['http://*/*', 'https://*/*'],  
    js: ['in-page.js'],  
    runAt:'document_start',  
    世界:'主要',  
  },  
]);  

在上面的示例中,每次加载新页面时, in-page.js都会在主内容选项卡中注入并执行。这个in-page.js文件设置window.ethereum供所有 dApp 使用。如果world undefined或isolated ,脚本仍会执行,但会在孤立的环境中执行。

Manifest 版本 3 的工作相当艰巨,因此请拥抱您最亲密的扩展开发人员。有许多巨大的结构变化,驾驭这些变化是一种残酷的推动!

How to Inject a Global with Web Extensions in Manifest V3的帖子首先出现在David Walsh 博客上。

原文: https://davidwalsh.name/inject-global-mv3

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Lou Plummer
  • Luke Wroblewski
  • Matt Stoller
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • Thinking Deep & Wide
  • Tim Kellogg
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme