🗒️浏览器插件开发
2023-7-11
| 2023-8-21
字数 1251阅读时长 4 分钟
type
status
date
slug
summary
tags
category
icon
password
浏览器插件开发,听起来是一件挺酷炫的事,尤其是体验过谷歌划词翻译、adblock 去除广告这些实用插件带来的效率提升之后。然而对后端程序员来说,浏览器插件开发又是陌生的事,因为其中的 html、css、javascript 语言都较少学习过。
出于好奇,我打算学习下浏览器插件开发,参考了一些视频以及 chatgpt 的帮助,只花了一个小时就完成了一个简单的浏览历史统计插件,还是很有趣的,欢迎大家参考实践,多多体验。

插件构建

这里的代码我完全是通过 chatgpt 生成的,当然它一次生成的代码并不一定是可用的,你要把报错信息或者需求进一步的反馈给它,几次调整得到差不多可用的代码。
先说一下我的设想:我想要这款插件能够去获取我的谷歌浏览器历史,然后分析出最常浏览的网页。我把这个需求告诉了 chatgpt,它给我生成了 manifest.jsonbackground.jspopup.htmlpopup.js 这四个文件,没错,这四个文件就足以完成我的要求了。
把这几个文件复制到本地的同一个目录里,可是该怎么让浏览器使用这几个文件呢?
首先在谷歌浏览器右上角拼图的地方点击,进入管理拓展程序页面。
notion image
点击“加载已解压的拓展程序”,然后指定你保存文件的目录。
notion image
这样,插件就加载成功了(报错信息也可以在这个页面查看),你只需要去打开新网页就能使用这个插件。

代码分析

前面讲到生成了 manifest.jsonbackground.jspopup.htmlpopup.js 这四个文件,那么其作用分别是什么呢?
  • manifest.json
这个文件是必须的,它声明了插件的基本信息,以及需要获取浏览器历史记录的权限。同时,我们指定了插件的后台脚本和弹出窗口的 HTML 文件。
添加了 storage 权限,以便在后台脚本中访问 chrome.storage.local。
添加了 tabs 权限,以便在后台脚本中监听标签页的创建事件。
  • background.js
使用 chrome.tabs.onUpdated 事件监听标签页的创建,在新标签页打开时检查 URL 是否为默认的空白搜索网页。如果是,我们就执行获取浏览器历史记录和弹出插件弹出窗口的操作。
使用 chrome.history.search API 获取浏览器历史记录,并通过 reduce 方法计算出每个 URL 出现的次数。然后,我们将出现次数最多的前 10 个 URL 存储到本地存储中,以便弹出窗口中的 HTML 文件可以使用。
  • popup.html
创建了一个简单的 HTML 页面,用于显示出现次数最多的前 10 个 URL 列表。
  • popup.js
使用 chrome.storage.local.get API 从本地存储中读取出现次数最多的前 10 个 URL,并将它们添加到弹出窗口的 HTML 页面中。

展示效果

打开一个空白搜索网页的时候,展示出我最近浏览最多的十个网页(左边)
notion image
最后的效果还是不错的,虽然没太多用处。毕竟整个实现流程没花太多时间。
当然这也可以完成得更高级些,一个设想是利用 ai 总结网页上的文字,生成关键词,然后基于这些关键词为用户推荐更多的关键词、文章或者视频教程,这样是不是就有价值多了呢。当然这些实现都有些困难。
 
你也可以基于 chatgpt 去快速完成你的插件,或者参考我这里的代码体验构建插件的基本流程。
 
  • 工具
  • FlinkCDC|如何判断全量阶段完成?Spark|类型转换踩坑记录
    Loading...