记一次谷歌插件开发

概述

前不久写ppt,发现要上传一些实际项目运行的视频。 刚好以前一个项目(多人在线2d游戏,可视频通话、互相聊天等)中积累了些前端媒体相关的知识。 于是我打算写一个简单的插件直接进行视频录制。

准备

我打算问下gpt

以下是一个简单的示例,演示如何编写一个 Chrome 浏览器扩展,该扩展会在每次打开新标签页时显示一个弹窗:

manifest.json 复制代码
{
  "manifest_version": 3,
  "name": "New Tab Popup",
  "version": "1.0",
  "description": "Display a popup whenever a new tab is opened.",
  "permissions": ["tabs"],
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [ { "matches": ["<all_urls>"], "js": ["content.js"] }
  "action": {
    "default_popup": "popup.html",
    "default_icon": {
      "16": "icon.png",
      "48": "icon.png",
      "128": "icon.png"
    }
  },
  "icons": {
    "16": "icon.png",
    "48": "icon.png",
    "128": "icon.png"
  }
}
background.js 复制代码
chrome.tabs.onCreated.addListener(function(tab) {
  chrome.windows.getAll({populate: true}, function(windows) {
    if (windows.length === 1 && windows[0].tabs.length === 1) {
      chrome.windows.create({url: 'popup.html', type: 'popup', width: 400, height: 300});
    }
  });
});
popup.html 复制代码
<!DOCTYPE html>
<html>
<head>
  <title>New Tab Popup</title>
</head>
<body>
  <h1>Welcome to the New Tab Popup!</h1>
</body>
</html>
  1. 创建一个名为 icon.png 的图标文件,用作扩展的图标。
  2. 将上述文件保存在同一个文件夹中,并确保文件结构如下:
diff 复制代码
- manifest.json
- background.js
- popup.html
- content.js
- icon.png

我大致解释下各文件的作用:
manifest.json :和我们前端开发的package.json文件类似但也作为主入口,它指定插件版本,拓展程序的名字、当前版本、描述、需要的权限、使用的后台脚本、拓展程序的行为、图标。 background.js :扩展程序的后台脚本,你可以认为它就是拓展程序的服务端,可以与前端通信,同时可以直接使用浏览器的api。
popup.html : 插件的前端页面,基本作为弹窗展示,当你点击插件的图标时,弹出的页面由此文件定义,在此文件中执行的js代码,可以和后台脚本通信。

此外有时候,插件需要访问当前页面的内容,所以还有一个内容脚本。它会注入到每一个打开的页面中执行。
content.js: 运行在每个匹配扩展定义的 URL 规则的页面上,因此它可以与页面内容直接交互,并执行各种定制化的操作,从而为用户提供更丰富的浏览体验。

编写

有了上述示例,基本就可以在此基础上修改出自己的插件了。

我的插件主要是录制视频(包含音频),我直接复用了以前的代码,放在了content.js中。 需要注意的2点

  1. manifest.json中的权限配置。
  2. 弹窗和内容及后台三者间的通信。

调试

  1. 在浏览器上打开 chrome://extensions/ 页面,切换开发者模式。

  2. 点击 "加载已解压的扩展程序"按钮,选择之前的代码根目录。

  1. 拓展程序列表会多出一个卡片,点击检测视图后面的蓝色字 Service Worker,可以看到backgroud.js的打印信息。

  1. 为方便开发,把插件固定在了页签上。
  1. 每次修改完代码后,点击卡片中的刷新,在右上方启动插件

插件打包

  1. 直接点击打包扩展程序,选择代码根目录
  1. 直接打包,初次打包私钥不用管
  1. 打包成功后会生成对应的私钥,要妥善保管,如果以后想升级插件版本的话还用的到。

上线谷歌应用商店

  1. 登录 Chrome 开发者平台(chrome.google.com/webstore/de... 如果第一次注册,还要付下5刀的注册费用,使用外贸信用卡付款
  1. 点击 "添加新项目",然后填写扩展程序的相关信息,包括名称、描述、类别、图标等。

  2. 在 "版本" 页面上传你打包好的扩展程序文件,并填写版本号和更新日志。

结尾

通过这个项目,我们深入了解了Chrome浏览器扩展的开发流程,加深了对前端媒体相关知识的理解,并成功地解决了项目需求。

相关推荐
Aliex_git1 天前
浏览器 API 兼容性解决方案
前端·笔记·学习
独泪了无痕1 天前
useStorage:本地数据持久化利器
前端·vue.js
程序员林北北1 天前
【前端进阶之旅】JavaScript 一些常用的简写技巧
开发语言·前端·javascript
全栈前端老曹1 天前
【Redis】Redis 持久化机制 RDB 与 AOF
前端·javascript·数据库·redis·缓存·node.js·全栈
NEXT061 天前
受控与非受控组件
前端·javascript·react.js
NEXT061 天前
防抖(Debounce)与节流(Throttle)解析
前端·javascript·面试
mqiqe1 天前
pnpm 和npm 有什么区别?
前端·npm·node.js
Swift社区1 天前
React 项目生产环境构建与静态资源优化
前端·react.js·前端框架
A小码哥1 天前
基于 Trae + 国产 GLM-4.7模型的任务驱动式软件开发实践
前端
上海合宙LuatOS1 天前
LuatOS核心库API——【fft 】 快速傅里叶变换
java·前端·人工智能·单片机·嵌入式硬件·物联网·机器学习