记一次谷歌插件开发

概述

前不久写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浏览器扩展的开发流程,加深了对前端媒体相关知识的理解,并成功地解决了项目需求。

相关推荐
泡泡oO4 小时前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈
维克兜率天4 小时前
趋势过滤:避免被“假突破“反复打脸
前端
8年区块链老兵5 小时前
一篇文章教会你:用区块高度读懂比特币链上的每一笔交易
前端
xixichensh5 小时前
前端转做AI程序员第一步——开发一个AI流式对话Demo
前端
小羊没烦恼!5 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
Leslie1655 小时前
聚合不只是 GROUP BY:HashAggregate 与 SortAggregate 的内存账本
前端
ITOM运维行者6 小时前
PHP性能监控怎么做?从响应时间到慢函数的6个关键指标
前端·javascript·后端
成旭先生6 小时前
AI 文本审核 API:一段中文文本判风险等级、命中标签与处置建议
java·前端·人工智能·api接口·内容风控·文本审核·ugc审核
liangshanbo12156 小时前
前端面试题:AI 对话中超长消息导致内存溢出,怎么解决?
java·开发语言·前端
静默回滚6 小时前
PDF能打开却不能复制,原来是权限密码
前端