当前位置: 首页 > news >正文

如何编写 Chrome 插件(Chrome Extension)

文章目录

    • @[toc]
  • 🧩 一、Chrome 插件是什么
  • 🧱 二、基本文件结构
  • 📜 三、manifest.json 基本语法
  • 🧠 四、核心脚本关系
  • ⚙️ 五、开发环境设置
  • 🧩 六、完整案例:点击按钮更改网页背景色
    • manifest.json
    • popup.html
    • popup.js
  • 📡 七、常见权限说明
  • 🧰 八、调试技巧
  • 🌐 九、更多进阶能力

🧩 一、Chrome 插件是什么

Chrome 插件(Extension)本质上是一个 包含网页技术(HTML、CSS、JavaScript、JSON) 的小程序,能与浏览器交互,比如:

  • 修改网页内容
  • 增加右键菜单
  • 操作浏览器标签
  • 与后端通信

🧱 二、基本文件结构

每个插件都是一个文件夹,里面有一个关键文件:manifest.json
最小结构如下:

my-extension/
│
├── manifest.json     // 插件的“配置文件”
├── background.js     // 后台脚本(控制逻辑)
├── content.js        // 注入网页的脚本
├── popup.html        // 弹出页面
├── popup.js          // 弹出逻辑
└── icon.png          // 图标

📜 三、manifest.json 基本语法

这是插件的「核心配置文件」。

{"manifest_version": 3,"name": "My First Extension","version": "1.0","description": "这是一个示例 Chrome 插件","icons": {"16": "icon.png","48": "icon.png","128": "icon.png"},"permissions": ["tabs", "storage", "activeTab"],"background": {"service_worker": "background.js"},"action": {"default_popup": "popup.html","default_icon": "icon.png"},"content_scripts": [{"matches": ["https://*/*", "http://*/*"],"js": ["content.js"]}]
}

🔹 字段说明:

字段作用
manifest_version必须是 3(新版标准)
name / version / description插件基本信息
icons图标文件
permissions插件要用到的浏览器权限
background后台脚本逻辑(常驻)
action插件按钮(右上角小图标)点击后弹出的窗口
content_scripts自动注入网页的脚本

🧠 四、核心脚本关系

文件执行环境作用
background.js浏览器后台处理逻辑、事件、通信
popup.html / popup.js插件弹窗用户界面与交互
content.js网页环境操作网页 DOM、注入脚本

⚙️ 五、开发环境设置

  1. 使用任意编辑器(推荐 VSCode)
  2. 文件保存到一个文件夹,比如:C:\MyExtension
  3. 打开 Chrome → 地址栏输入:chrome://extensions/
  4. 开启右上角「开发者模式
  5. 点击「加载已解压的扩展程序」→ 选择你的文件夹
  6. 插件就加载成功 ✅

🧩 六、完整案例:点击按钮更改网页背景色

manifest.json

{"manifest_version": 3,"name": "Color Changer","version": "1.0","description": "点击按钮改变网页背景色","permissions": ["activeTab", "scripting"],"action": {"default_popup": "popup.html","default_icon": "icon.png"}
}

popup.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>变色插件</title><style>button {width: 120px;height: 40px;font-size: 16px;}</style>
</head>
<body><button id="changeColor">变色!</button><script src="popup.js"></script>
</body>
</html>

popup.js

document.getElementById("changeColor").addEventListener("click", async () => {let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });chrome.scripting.executeScript({target: { tabId: tab.id },func: () => {document.body.style.backgroundColor = "#" + Math.floor(Math.random() * 16777215).toString(16);}});
});

👉 点击插件图标 → 弹出窗口 → 点击“变色”按钮 → 当前网页背景颜色随机变化。


📡 七、常见权限说明

权限用途
"tabs"访问标签页信息
"storage"使用 chrome.storage 存储数据
"scripting"向网页注入脚本
"activeTab"操作当前活动页面
"contextMenus"创建右键菜单

🧰 八、调试技巧

  • 打开 chrome://extensions/ → 找到插件 → 点击「背景页」或「service worker」查看日志
  • console.log() 调试
  • 修改文件后点击“刷新”插件即可生效

🌐 九、更多进阶能力

  • 🔹 使用 chrome.runtime.sendMessage() 实现脚本通信
  • 🔹 使用 chrome.storage.sync 保存用户设置
  • 🔹 使用 chrome.contextMenus 创建右键菜单
  • 🔹 使用 chrome.declarativeNetRequest 拦截网络请求

http://www.dtcms.com/a/536033.html

相关文章:

  • 怎样做网站吸引人深圳网站seo优化排名公司
  • 比wordpress更好的网站程序外贸高端网站建设
  • Qt QML Q_DECLARE_METATYPE宏的作用浅解
  • PyTorch 中 Tensor 交换维度(transpose、permute、view)详解
  • WebGL低端设备优化全攻略
  • 网站顶部素材校园文创产品设计
  • 无界微前端学习和使用
  • FPGA DDR3实战(十一):基于DDR3的高速故障录播系统(三)—— 地址管理与故障定位机制
  • 自定义协议、序列化与守护进程:构建可靠后端服务
  • 【FPGA】时序逻辑计数器——Verilog实现
  • 示范专业网站建设wordpress 添加二级
  • 【LeetCode】88. 合并两个有序数组
  • Redis键过期策略深度剖析:惰性删除与定期删除的完美平衡
  • 【紧急救援】MySQL root密码忘记?一键重置脚本和全平台解决方案
  • Redis Commander:一款基于Web、免费开源的Redis管理工具
  • 云南省住房和城乡建设局网站做投标的在什么网站找信息
  • 操作系统5.3.4 磁盘的管理
  • Go 编程基础
  • 【Go】P13 Go 语言核心概念:指针 (Pointer) 详解
  • oss中的文件替换后chrome依旧下载到缓存文件概述
  • Go Web 编程快速入门 08 - JSON API:编码、解码与内容协商
  • Golang交叉编译到Android上运行
  • 学网站开发去哪学最好的公文写作网站
  • F035 vue+neo4j中医南药药膳知识图谱可视化系统 | vue+flask
  • 图形数据库Neo4J简介
  • QR算法:矩阵特征值计算的基石
  • 宁波网站建设公司代理珠海集团网站建设报价
  • 「用Python来学微积分」17. 导数与导函数
  • RAID技术:RAID 0/1/5/10 原理、配置与故障恢复
  • 7.1-性能与测试工具