开发Chrome/Edge插件基本流程

开发Chrome/Edge插件(也称为扩展程序)是一个相对直接的过程,因为这两种浏览器都基于Chromium内核,插件开发方式基本一致。下面是一个详细的开发指南:

一、插件基本结构

一个简单的Chrome/Edge插件至少包含以下文件:

  1. manifest.json - 插件的配置文件(必需)
  2. 功能实现文件(HTML/CSS/JavaScript等)

二、核心文件:manifest.json

这是插件的入口配置文件,最新推荐使用V3版本(V2已逐步淘汰)。以下是一个基础的V3版本配置:

json 复制代码
{
  "manifest_version": 3,
  "name": "我的第一个插件",
  "version": "1.0",
  "description": "一个简单的Chrome/Edge插件示例",
  "icons": {
    "16": "icons/icon16.png",
    "48": "icons/icon48.png",
    "128": "icons/icon128.png"
  },
  "action": {
    "default_popup": "popup.html",
    "default_icon": "icons/icon16.png"
  },
  "permissions": ["storage"]
}

主要字段说明:

  • manifest_version: 版本号(必须为3)
  • name/version/description: 插件基本信息
  • icons: 插件图标(不同尺寸用于不同场景)
  • action: 配置插件图标点击后的行为(如弹出页面)
  • permissions: 插件需要的权限(如存储、标签页操作等)

三、开发步骤

1. 创建基础文件结构
复制代码
my-extension/
├── icons/
│   ├── icon16.png
│   ├── icon48.png
│   └── icon128.png
├── manifest.json
├── popup.html
└── popup.js
2. 编写弹出页面(popup.html)

这是点击插件图标时显示的界面:

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      width: 200px;
      height: 150px;
      padding: 10px;
    }
    h3 {
      margin: 0 0 10px 0;
    }
  </style>
</head>
<body>
  <h3>当前时间</h3>
  <div id="time"></div>
  <script src="popup.js"></script>
</body>
</html>
3. 编写功能逻辑(popup.js)

实现显示当前时间的功能:

javascript 复制代码
// 获取当前时间并显示
function updateTime() {
  const now = new Date();
  document.getElementById('time').textContent = now.toLocaleTimeString();
}

// 初始化显示并定时更新
updateTime();
setInterval(updateTime, 1000);

四、在浏览器中加载插件

  1. 打开浏览器(Chrome或Edge)
  2. 地址栏输入 chrome://extensions/(Edge为 edge://extensions/
  3. 开启右上角的「开发者模式」
  4. 点击「加载已解压的扩展程序」
  5. 选择插件所在的文件夹

五、插件核心功能扩展

1. 背景服务(Background Service)

用于处理后台任务(如定时操作),在manifest.json中配置:

json 复制代码
"background": {
  "service_worker": "background.js"
}

background.js示例:

javascript 复制代码
// 监听插件安装事件
chrome.runtime.onInstalled.addListener(() => {
  console.log("插件已安装");
});

// 定时发送通知
setInterval(() => {
  chrome.notifications.create({
    type: "basic",
    iconUrl: "icons/icon48.png",
    title: "定时提醒",
    message: "这是一个定时通知"
  });
}, 60000); // 每分钟一次

需要在permissions中添加notifications权限。

2. 内容脚本(Content Script)

可以注入到网页中,操作网页DOM。在manifest.json中配置:

json 复制代码
"content_scripts": [
  {
    "matches": ["<all_urls>"], // 匹配所有网页
    "js": ["content.js"]
  }
]

content.js示例(修改网页背景色):

javascript 复制代码
// 当页面加载完成后执行
window.addEventListener('load', () => {
  document.body.style.backgroundColor = '#f0f8ff';
});

六、调试插件

  • 弹出页面:右键点击插件图标 → 「检查」
  • 背景服务:在扩展程序页面点击插件的「服务工作线程」链接
  • 内容脚本:在网页的开发者工具中查看(Sources → Content scripts)

七、打包发布

  1. 开发完成后,在扩展程序页面点击「打包扩展程序」
  2. 生成.crx文件(Chrome)或.zip文件(Edge)
  3. 发布到Chrome Web Store或Microsoft Edge Add-ons商店(需要开发者账号)

八、学习资源

相关推荐
用户90443816324605 小时前
AI 生成的 ES2024 代码 90% 有坑!3 个底层陷阱 + 避坑工具,项目 / 面试双救命
前端·面试
小p5 小时前
react学习6:受控组件
前端·react.js
黑云压城After5 小时前
纯css实现加载动画
服务器·前端·css
鹏多多5 小时前
Web使用natapp进行内网穿透和预览本地页面
前端·javascript
ttod_qzstudio5 小时前
Vue 3 Props 定义详解:从基础到进阶
前端·vue.js
钱端工程师5 小时前
uniapp封装uni.request请求,实现重复接口请求中断上次请求(防抖)
前端·javascript·uni-app
dcloud_jibinbin5 小时前
【uniapp】解决小程序分包下的json文件编译后生成到主包的问题
前端·性能优化·微信小程序·uni-app·vue·json
茶憶5 小时前
uniapp移动端实现触摸滑动功能:上下滑动展开收起内容,左右滑动删除列表
前端·javascript·vue.js·uni-app
Ayn慢慢6 小时前
uni-app PDA焦点录入实现
前端·javascript·uni-app
一位搞嵌入式的 genius6 小时前
微前端架构:JavaScript 隔离方案全解析(含 CSS 隔离)概要
前端·css·前端实战