位置: IT常识 - 正文

Chrome插件开发教程(chrome 浏览器插件开发)

编辑:rootadmin
Chrome插件开发教程

推荐整理分享Chrome插件开发教程(chrome 浏览器插件开发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:chrome插件开发工具,chrome插件使用,chrome插件开发文档官方,chrome插件使用,chrome 浏览器插件开发,chrome插件开发工具,chrome插件开发文档官方,chrome插件开发视频教程,内容如对您有帮助,希望把文章链接给更多的朋友!

本文将详细介绍如何开发一款Chrome插件,包括插件的介绍、开发配置与调试。不包含插件的发布、审核等内容。

通过阅读本教程,你能够:

了解浏览器器插件,这里专指 Chrome Extension(CE)的基本知识和运行原理了解如何开发CE的界面和逻辑调试插件,根据错误信息做出修复什么是浏览器插件

浏览器插件是一种可增强网页功能的嵌入程序。有了插件,用户的使用不再局限于网页,还可以享用插件带来的增强功能。用户只需到官方插件商店搜索、下载、安装即可使用,非常便捷。 插件商店由不同的浏览器厂商维护,比如你要在Chrome上使用插件,要到Chrome Webstore下载安装。Firefox上亦然。

创建 manifest

新建文件夹,命名CE-Demo,增加一个manifest.json的文件,内容如下:

{ "name": "CE-Demo", "description": "CE-Demo's description shows here!", "version": "0.0.1", "manifest_version": 3}复制代码

该文件描述了插件的基本属性信息、代码的运行路径等。后面我会不断地丰富其内容。

加载插件

这里我们直接载入整个目录(尚未打包):

1.地址栏输入chrome://extensions进入插件管理页面。 2.选中界面右上角的开发者模式 3.点击左上角的加载已解压的扩展程序,并选中刚才的插件文件夹

插件已经成功载入。 可以点击扩展程序按钮,鼠标移动到插件右侧的固定按钮,固定到标签栏里。

标签栏多了个icon图标,点击可唤出插件的popup界面:

插件不会热更新,记得每次修改代码后点击刷新icon载入最新代码

添加功能

我们将实现一个简易版的历史记录插件。

注册 background.js

它是一种后台脚本,浏览器会在插件安装或重新加载时扫描它并初始化(事件的监听等)。它是整个插件的重要组成部分。必须在manifest里配置。

{"name": "CE-Demo", "description": "I am a demo", "version": "0.0.1", "manifest_version": 3, "background": { "service_worker": "background.js" }}复制代码Chrome插件开发教程(chrome 浏览器插件开发)

同时在插件目录添加background.js文件,包含以下代码:

chrome.runtime.onInstalled.addListener(() => { console.log('后台脚本运行成功!') chrome.storage.sync.set({ history: [] });});复制代码

代码将在插件安装完毕后,做两件事:

1.打印一段日志信息 2.通过storage API 设置一个初始值为空数组的存储字段。

要使用storage,需在manifest添加该权限:

{ ... "permissions": ["storage"] ...}复制代码

点击server worker链接打开devtools界面,即可看到日志信息:

添加历史界面

这里,我们选择popup的交互形式:当用户点击标签栏里插件图标时展示用户的访问历史(仅含插件安装后的历史)。 我们需要覆盖默认的popup界面,修改manifest:

{ ... "action": { "default_popup": "popup.html" }, ...}复制代码

在插件目录新增三个文件:popup.html、popup.js、popup.css:

<!DOCTYPE html><html> <head> <link rel="stylesheet" href="popup.css"> </head> <body> <div id="container"> 暂无浏览记录~ </div> <script src="popup.js"></script> </body></html>复制代码chrome.storage.sync.get("history", ({ history }) => { const contentHTML = history.length === 0 ? "暂无浏览记录~" : history .map((record) => { return ` <div class="item-box"> <div class="item-box_time">${record.time}</div> <a class="item-box_text" href="${record.url}">${record.title}</a> </div> `; }) .join(""); document.querySelector('#container').innerHTML = contentHTML});复制代码

上述代码先从storage里读取history内容,再将内容组装成html插入到文档中。

记录浏览历史

插件提供了内容脚本 Content Scripts(CS)的概念,当用户打开并访问某个网站时,浏览器将CS注入网站的文档里执行。 因此,我们需在CS脚本里编写记录的逻辑。 往manifest里添加CS:

{ ... "content_scripts": [ { "matches": ["*://*/*"], "js": ["content/index.js"] } ]}复制代码

插件目录里新增目录content并添加index.js文件:

chrome.storage.sync.get("history", ({ history }) => { console.log("history--->", history); history.unshift({ title: document.title, url: location.href, time: new Date().toLocaleString(), }); chrome.storage.sync.set({ history });});复制代码

上述代码获取访问的页面的 标题,url,访问时间存储到 storage里。 随便访问几个网页后,点击插件图标可以看到:

添加自定义icon 默认icon比较简陋,我们用一张熊猫图片作为插件的icon。 新增assets目录,放一个icon.png文件。 修改manifest:

{ "action": { "default_icon": { "16": "/assets/icon.png" } }}复制代码

源码附件已经打包好上传到百度云了,大家自行下载即可~

链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27 提取码: yu27 百度云链接不稳定,随时可能会失效,大家抓紧保存哈。

如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~

开源地址

码云地址: http://github.crmeb.net/u/defu

Github 地址: http://github.crmeb.net/u/defu

链接:https://juejin.cn/post/7122439073058258958

本文链接地址:https://www.jiuchutong.com/zhishi/298298.html 转载请保留说明!

上一篇:【Javaweb学习笔记】在Eclipse中创建Web项目(javaweb总结笔记)

下一篇:Vue项目实战——实现一个任务清单【基于 Vue3.x 全家桶(简易版)】(最全vue项目实战)

  • 小米11在拍照方面支持哪些功能(小米11 拍照)

    小米11在拍照方面支持哪些功能(小米11 拍照)

  • 快手本地作品突然不见了的原因(快手里本地作品怎么没有了怎么找回)

    快手本地作品突然不见了的原因(快手里本地作品怎么没有了怎么找回)

  • 电脑钉钉怎么开摄像头学生(电脑钉钉怎么开两个)

    电脑钉钉怎么开摄像头学生(电脑钉钉怎么开两个)

  • 写代码用什么笔记本(写代码用什么笔记本won还是苹果电脑)

    写代码用什么笔记本(写代码用什么笔记本won还是苹果电脑)

  • 支付宝不打开就不计步(支付宝不打开就没有语音播报)

    支付宝不打开就不计步(支付宝不打开就没有语音播报)

  • 注册京东用户名是随机的吗(京东注册用户名是自动给的吗)

    注册京东用户名是随机的吗(京东注册用户名是自动给的吗)

  • 拼多多步数那个怎么找不到了(拼多多步数是什么)

    拼多多步数那个怎么找不到了(拼多多步数是什么)

  • 联想电脑相机显示灰色(联想电脑相机显示被占用)

    联想电脑相机显示灰色(联想电脑相机显示被占用)

  • iphone7充电口接触不灵敏(iphone7plus充电接口)

    iphone7充电口接触不灵敏(iphone7plus充电接口)

  • ipx4防水等级什么概念(ipx4防水等级和ip24)

    ipx4防水等级什么概念(ipx4防水等级和ip24)

  • cpu会坏吗(笔记本cpu会坏吗)

    cpu会坏吗(笔记本cpu会坏吗)

  • b612可以录制多长的视频(b612视频可以录几分钟)

    b612可以录制多长的视频(b612视频可以录几分钟)

  • 淘宝差评后可以申请退货退款吗(淘宝差评可以修改多少次)

    淘宝差评后可以申请退货退款吗(淘宝差评可以修改多少次)

  • 笔记本电脑可以下载万能钥匙吗(笔记本电脑可以外接显卡吗?)

    笔记本电脑可以下载万能钥匙吗(笔记本电脑可以外接显卡吗?)

  • 华为蓝色呼吸灯死机(华为手机呼吸灯蓝色是什么意思)

    华为蓝色呼吸灯死机(华为手机呼吸灯蓝色是什么意思)

  • 什么软件可以合成视频(什么软件可以合并歌曲)

    什么软件可以合成视频(什么软件可以合并歌曲)

  • 闲鱼额度是什么(闲鱼限额10000)

    闲鱼额度是什么(闲鱼限额10000)

  • 抖音怎么边放歌边直播(抖音怎么边放歌边微信发语音呢)

    抖音怎么边放歌边直播(抖音怎么边放歌边微信发语音呢)

  • 苹果手机能不能分屏(苹果手机能不能截长图)

    苹果手机能不能分屏(苹果手机能不能截长图)

  • iphonexs广角怎么开(iphone xs 广角)

    iphonexs广角怎么开(iphone xs 广角)

  • 苹果手机怎么打开呼吸灯(苹果手机怎么打特殊符号)

    苹果手机怎么打开呼吸灯(苹果手机怎么打特殊符号)

  • 小米步数怎么同步微信(小米步数怎么同步手机)

    小米步数怎么同步微信(小米步数怎么同步手机)

  • 微信里置顶是什么意思(微信里置顶什么意思)

    微信里置顶是什么意思(微信里置顶什么意思)

  • 电脑进入省电模式怎么唤醒(电脑进入省电模式开不了机)

    电脑进入省电模式怎么唤醒(电脑进入省电模式开不了机)

  • uniappvideo避坑指南(H5、小程序、app)(uniapp cover-view)

    uniappvideo避坑指南(H5、小程序、app)(uniapp cover-view)

  • 手把手教你基于HTML、CSS搭建我的相册(上)(基于什么意思)

    手把手教你基于HTML、CSS搭建我的相册(上)(基于什么意思)

  • 个人偶然所得税率多少
  • 息税前利润变动率的计算公式
  • 出租车定额发票真伪查询
  • 小规模未开票收入如何填写申报表增值税
  • 技术服务的分录
  • 出口报关单运费小于实际运费
  • 现在的统计证还用年检吗
  • 独立核算和非独立核算由谁定
  • 增值发票盖章有什么用
  • 专利资本化条件
  • 事业单位私车公用条例
  • 分公司独立核算还需要总公司汇总缴纳吗
  • 中外合资经营企业法
  • 个人怎么捐赠物资
  • 营改增后甲供材如何扣除
  • 企业安全生产费用提取标准 最新
  • 当月支付租金没有发票
  • 差错更正要调去年的吗
  • 结算纪律与法律责任表格
  • 关联企业税收
  • 汽车修理费入账
  • 企业取得的土地使用权用于出租或增值目的时
  • 销售货物收入与租金收入的纳税区别
  • 什么是往来科目
  • 废旧物资缴纳增值税政策
  • 在建工程二级科目待摊支出
  • 季度利润
  • vnisedit 打包
  • 广告公司的成本是什么
  • 华硕win10笔记本如何恢复出厂设置
  • windows11搜索
  • 其他业务支出包括的内容
  • ati2plab.exe是什么进程 ati2plab进程安全吗
  • 夫妻房子归属权问题
  • php微信公众号开发框架
  • mysql ndb innodb
  • 母公司和子公司可以一起投标吗
  • python一元二次方程求根
  • python 自定义异常
  • 向分支机构支付融资利息可以扣除吗?
  • 预交的企业所得税需要计提吗?
  • 什么情况下计入库存商品
  • 网上申请发票要钱吗
  • 进口货物如何支付外汇
  • 房地产企业增值税预征率
  • 纺织品业务
  • 空调维修保养方案
  • 什么情况下一般疑问句用does
  • 初级会计实务重点内容
  • 普通发票忘记开数量和单价可以用吗?
  • 开户套餐费是什么意思
  • 注销时,其他应付款有余额,怎么冲减
  • 出口额和外汇收入
  • 支付银行贷款利息的会计处理
  • 河道维护中心
  • 年底销项税额和进项税额要转出吗
  • 非流动资产增加意味什么
  • 自建厂房的进项税额抵扣
  • 固定资产改变用途折旧处理
  • 开业建账到年末怎么做账
  • MySQL 5.7 mysql command line client 使用命令详解
  • xp怎么安装framework
  • windowsxp
  • centos8拨号上网
  • Radio.exe - Radio是什么进程 有什么用
  • 如何把旧mac上的所有内容迁移到新mac上
  • linux必不可少的分区
  • Win10预览版更新弹窗如何关闭
  • ubuntu怎么将文件传送到电脑
  • Linux禁止MySQL开机自启动的小技巧
  • 电脑没有网络连接怎么办
  • Android HandlerThread 实例
  • unity碰撞抖动怎么解决
  • 批处理文件是可执行文件吗
  • python编程入门指南
  • 利用pm2部署多个设备
  • javascript中cookie
  • jquery给表单赋值
  • 国税人事部门党建工作(税务局党建部门)
  • 包角计算公式推导
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设