从0到1:手把手带你开发第一个Chrome插件

金金金上线!

话不多,只讲你能听懂的前端知识

前言

谁不想拥有一个属于自己的浏览器插件呢~

开始

  1. 创建一个新目录

  2. 创建manifest.json文件,添加以下内容:

    json 复制代码
    {
      "name": "Hello Extensions",
      "description": "Base Level Extension",
      "version": "1.0",
      "manifest_version": 3,
      "action": {
        "default_popup": "hello.html",
        "default_icon": "hello_extensions.png"
      }
    }
  3. 下载个icon图片并命名为hello_extensions.png,需要和default_icon一致

  4. 创建一个文件,hello.html(弹出式窗口,就是点击了扩展会弹出一个小框显示信息),添加以下内容:

    html 复制代码
    <html>
     <body>
       <h1>Hello Extensions</h1>
     </body>
    </html>

加载未打包的扩展程序

如需在开发者模式下加载未封装的扩展程序,请执行以下操作:

  1. 在新标签页中输入 chrome://extensions 即可前往"扩展程序"页面。(根据设计,chrome:// 网址不可链接。)

    • 或者,点击"扩展程序"菜单拼图按钮,然后选择菜单底部的管理扩展程序
    • 或者,点击 Chrome 菜单,将鼠标悬停在更多工具 上,然后选择扩展程序
  2. 点击开发者模式旁边的切换开关,即可启用开发者模式。

  3. 点击加载已解压缩的文件按钮,然后选择扩展程序目录。(可能没那么快响应,记得稍等一会)

这样就代表成功了

固定扩展程序

默认情况下,当您在本地加载扩展程序时,它会显示在扩展程序菜单中。将扩展程序固定到工具栏,以便在开发过程中快速访问扩展程序。

点击扩展程序的操作图标(工具栏图标);您应该会看到一个弹出式窗口。

重新加载扩展程序

  • 有时候会有修改内容的需求,此时改完后 就需要重新加载扩展程序以看到最新的内容

  • 修改manifest.json,将扩展程序的名称更改为 Hello Extensions of the world!

保存文件后,您还必须刷新扩展程序,才能在浏览器中看到此更改。前往"附加信息"页面,然后点击开启 /关闭切换开关旁边的刷新图标:

验证

何时应该重新加载扩展程序呢?

  • 下表显示了哪些组件需要重新加载才能看到更改:

    扩展程序组件 需要重新加载扩展程序
    清单
    Service Worker
    内容脚本 是(包括托管网页)
    弹出式窗口
    "选项"页面
    其他扩展程序 HTML 网页

查找控制台日志和错误

控制台日志

  • 在开发期间,您可以通过访问浏览器控制台日志来调试代码。在本例中,我们将找到弹出式窗口的日志。首先,将脚本标记添加到 hello.html

    html 复制代码
    <html>
      <body>
        <h1>Hello Extensions</h1>
        <script src="popup.js"></script>
      </body>
    </html>
  • 创建一个 popup.js 文件,并添加以下代码:

    js 复制代码
    console.log("This is a popup!")

在控制台中查看系统记录的这条消息,请执行以下操作:

  1. 打开弹出式窗口。

  2. 右键点击弹出式窗口。

  3. 选择检查

  4. DevTools 中,前往控制台面板

错误日志

  • 现在,来破坏一下扩展程序。为此,移除 popup.js 中的闭引号:

  • 前往"扩展程序"页面,然后打开弹出式窗口。系统随即会显示一个错误按钮。

  • 点击错误按钮,详细了解相应错误:

如需详细了解如何调试服务工件、选项页面和内容脚本,请参阅调试扩展程序


可以通过多种方式构建扩展程序项目;不过,唯一的前提是将 manifest.json 文件放在扩展程序的根目录中(之后出如何构建扩展程序相关文章~)


编写有误还请各位指正,万分感谢

相关推荐
牛奶4 天前
如何自己写一个浏览器插件?
前端·chrome·浏览器
爱勇宝5 天前
我给自己做了一个新标签页:不登录、不打扰、打开就能用
前端·html·浏览器
怕浪猫9 天前
Playwright 的 CDP Session 机制详解
浏览器·ai编程·自动化运维
小碗细面14 天前
ego lite:让 AI Agent 操作浏览器快 3 倍的秘密 ⭐
浏览器·ai编程
Patrick_Wilson15 天前
Cookie 作用域避坑:父域泄漏、同名优先级与多环境隔离
前端·http·浏览器
Patrick_Wilson18 天前
从「框架内部报错」到「请求头被网关截断」:一次 Sentry 排障与前端 Cookie 误用复盘
前端·http·浏览器
Patrick_Wilson20 天前
router.replace 之后紧跟 reload,页面为什么无限刷新?
javascript·react.js·浏览器
爱看老照片20 天前
浏览器的同源策略以及跨源问题 ( 浏览器的同域策略以及跨域问题)
浏览器·web·同源策略·跨域
Bigger21 天前
记一次坑爹的 Cloudflare Pages 部署:Failed to load module script 是怎么把我的 SPA 搞挂的
前端·ci/cd·浏览器
米丘24 天前
浏览器 本地存储 (cookie 、sessionStorage、localStorage)
安全·http·浏览器