开发OneNav浏览器扩展:我的经验分享

文章编号:1227 2024-03-22 浏览器扩展开发 WXT OneNav扩展 前端

开发OneNav浏览器扩展:我的经验分享

最近我们发布了OneNav浏览器扩展版本,这也是第二次重构后的版本,期间遇到了一些技术难点,不过最后得以解决,所以打算用这篇文章分享xiaoz在开发OneNav浏览器扩展中用到的技术和经验。

02d0d5634eaf4d33.png

关于OneNav

OneNav是一款开源免费的书签(导航)管理程序,由xiaoz使用使用PHP + SQLite 3开发,界面简洁,安装简单,使用方便。OneNav可帮助你你将浏览器书签集中式管理,解决跨设备、跨平台、跨浏览器之间同步和访问困难问题,做到一处部署,随处访问。

还不了解OneNav的朋友可以参考这篇文章: 一篇文章带你快速了解开源免费的书签(导航)管理程序OneNav

两次重构与技术选型

OneNav浏览器扩展是发布以来的第三个版本,期间经历了两次重构。

第一个版本

首次重构

第二个版本进行了重构,使用“Vue3 + vitesse-webext + Vant 4”这样的技术组合,实际上线后发现存在以下问题:

最后不得不放弃“vitesse-webext + Vant 4”这样的方案。

二次重构

第三个版本,也就是现在的版本,再次进行了重构,这次采用的技术方案是“Vue3 ++ Element Plus”,WXT是下一代Web扩展框架,优点在于他可以通过一套代码编译出适用于Chrome/Firefox/Safari浏览器的扩展。这一点特性显得尤为重要,不然每个浏览器都去单独开发和适配,工作量属实不小。

在使用 vitesse-webext 方案的时候遇到了Firefox编译问题,而在中编译上非常轻松,不同的浏览器都顺利通过编译。

56d3bd1f368a6ccb.png

WXT开发浏览器扩展的一些经验

在实际使用WXT开发过程中并不是那么顺利,期间也遇到了不少问题,不过最后得以解决,于是整理了下面的经验。

编译代码

WXT默认编译的是Chrome扩展,直接使用命令:进行编译,编译后的目录在 .output/chrome-mv3 ,如果需要编译Firefox扩展,只需要加上参数即可:

# WXT编译Firefox扩展
pnpm build --browser firefox --mv3

Firefox默认使用的版本,为了避免后续升级问题,我直接添加了参数来指定最新的版本。

同理,如果需要编译Edge扩展,使用下面的命令:

pnpm build --browser edge

本来xiaoz还打算支持Safari,奈何苹果过于封闭,没找到Safari安装第三方扩展的方法,导致无法调试,于是不得不放弃支持Safari浏览器。

WXT在Firefox中遇到的问题

在我编译Firefox扩展后,打算在Firefox下进行调试,发现Firefox无法安装第三方扩展,会提示“此附加组件无法安装,因为它未通过验证”,可以直接参考这篇文章《 Firefox提示“此附加组件无法安装,因为它未通过验证”解决办法 》进行解决。

Firefox浏览器扩展必须在 manifest.json 中指定ID,否则安装和上架的时候会提示ID不存在,导致无法安装。我找遍了WXT文档,并没有发现关于Firefox ID的指示,于是我是编译后手动修改 manifest.json ,添加了下面的内容来指定ID:

"applications": {"gecko": {"id": "oneNav@example.com"}}

之所以Firefox扩展需要ID,ChatGPT是这样解释的:

Chrome浏览器不需要这个ID,否则会出现警告提示(不影响扩展运行)!!!

上架浏览器扩展

目前xiaoz已将OneNav浏览器扩展分别上架到了 Chrome WEB Store / Firefox ADD-ONS 以及Microsoft-Edge-Extensions,不过Microsoft-Edge-Extensions还在审核中,Chrome和Firefox已经上架。

Chrome/Edge/Firefox分别对应的开发者平台如下:

其中Chrome需要支付的一次性开发者费用,而Edge和Firefox则是免费的,不需要任何费用即可提交您的扩展。提交扩展时根据平台的规则指示操作即可,有以下几个地方需要注意:

给我的感受是Chrome平台最规范,最严格,每一个扩展权限开发者都必须做出明确的解释为什么要用到这个权限,而Edge和Firefox则要宽松很多。

辅助工具

开发过程中,xiaoz就用到了一个第三方辅助工具,是用来生成不同尺寸的扩展图标,地址是: Chrome Extension Icon Generator

结语

以上就是xiaoz在开发OneNav浏览器扩展的一些心得和经验分享,希望对各位开发者有所帮助。如果您打算支持多个浏览器,强烈推荐试一下这个下一代Web扩展框架,能提高不少效率。

另外我创建了一个浏览器扩展开发的交流群,有兴趣的朋友可以微信扫码加入。

a9baef7e39b3efd6.png


如何开发Chrome浏览器扩展程序

先进入chrome 网上应用店,进入方法有多种,可以直接在浏览器地址栏输入应用店的地址或者点击“设置”→“扩展程序”→“安装扩展程序”

Chrome扩展开发入门 2.怎样使用Chrome Extensions API

Google提供的Chrome Extensions API是开发Chrome扩展用到的最权威资料之一,里面详细介绍Chrome扩展所能够实现的各方面的功能和Chrome浏览器所提供的接口(比如怎么调用用户书签)。 使用步骤如下:1. 后台HTML里的JS在浏览器被打开时就开始执行了,当浏览器关闭时停止工作。 你可以在这里写一些代码监视浏览器动作(比如在监视到用户创建了一个新标签页时邪恶的把它关闭,可以做定时任务(setInterval等),可以添加一段音乐。 2. 用户点击扩展栏图标时可以弹出一个页面,当用户点击网页部分时这个页面就被关闭了。 3. 可以使用js获取用户当前网页的DOM数据,监听用户键盘、鼠标动作。 这些代码是一个独立的JS文件(而不是像后台、弹出窗等是一个HTML文件里的嵌入js代码),通过扩展配置注入到相应的网页。 4. 读取用户计算机数据(NPAPI Plugins)。 这个功能要用到dll(动态链接库)知识,可以启动用户电脑的程序,删除用户文件等功能。 相当于一个小Windows程序。 利用Chrome提供的方法可以让扩展的后台页面与你的dll通信。

如何开发360浏览器插件

1、我们先创建一个文件夹,名字随便取2、然后在该文件夹下,创建一个文本文件,命名为,其内容为{ manifest_version: 2, name: One-click Kittens, description: This extension demonstrates a browser action with kittens., version: 1.0, permissions: [], browser_action: { default_icon: , default_popup: }}3、然后在创建一个名为的文本文件,再找一张图片,名为作为插件的图标。 4、在里的内容就是我们点击插件后显示的 内容,我在文件里面的 代码是

Wow!Handsome!

,大家也可以自己编写。 接下来我们就要加载插件了。 5、打开360极速浏览器,在右上角点击有三道横杠,在菜单中选择工具>扩展程序或 管理扩展,这会打开扩展管理的页面6、选中 开发人员模式,再点击 加载已解压的扩展程序,在弹出的 窗口选择你的文件夹7、最后在右上角便会出现你的图标,点击它就会显示我们的内容了!

 福建师范大学研究生信息系统  医生中专学历出路  西南石油大学在职研究生  商品销售收入  苏宁快递管理平台官网  压路机液压系统  汇源通集团  贵州专升本英汉互译 
本文地址: https://www.q16k.com/article/20fe8b484452d723fda3.html
开心电视论坛

开心电视网提供全面的机顶盒固件下载,电视盒子固件,联通机顶盒固件下载,电信机顶盒固件下载,移动魔百和固件下载,刷机救砖,电视ROM固件下载,第三方固件下载,智能电视ROM固件下载、官方刷机升级救砖固件下载,覆盖主流的海信电视固件,TCL电视固件,康佳电视固件,长虹电视固件,乐视电视固件,小米电视固件,魔百和固件,华为盒子固件,英菲克固件,迪优美特等等品牌固件,体验一站式刷机升级救砖服务,体验到刷机带来的乐趣

聚合网

专注分享免费、绿色、无毒、无捆绑的实用软件资源!

免费的PSD模板!Photoshop的创意

PhotoshopPSD和Mockups!模板、手册、Photoshop元素及更多✓免费下载✓无版权,供个人和商业使用

hao361.com

该站点未添加描述description...

Ningbo

Ningbo Xingya Auto Parts Co., Ltd.

{网站标题}

该站点未添加描述description...

注册会计师

会计之窗为您提供专业详细的会计电算化,注册会计师报名条件,会计科目表,会计资格评价网,会计基础教程,会计科目等信息。

梦想启航

该站点未添加描述description...

【合肥新房

合肥365淘房为您提供合肥新房,合肥楼盘,合肥房价查询以及全面的合肥楼盘信息,合肥热门楼盘信息,合肥在售楼盘信息,合肥2018年房价信息。更多合肥新房楼盘信息,尽在合肥365淘房。

手机APP大全下载

雷神号是一个专门为用户访客提供最新的手机应用下载,最火爆的手机游戏下载,最热门的新闻资讯浏览的综合型网站平台,在这里会每天不断更新最优质安全软件游戏以及最新的资讯,为用户带来最好的体验。

倒计时器

倒计时器提供计时器,倒计时,秒表计时,网页倒计时,在线计时器,秒表计时器,倒计时在线使用等。

旅法师营地

旅法师营地是有温度的玩家聚集地。在这里你可以看到各种游戏内容,包括炉石传说、万智牌、月圆之夜、宝可梦、幻兽帕鲁、影之诗、博德之门3等游戏的资讯,超专业的攻略,超有趣的故事,超好用的工具。

轴承型号查询

型号查询系统的轴承数据是以国家标准和行业标准为依据,参照中外轴承书籍整理而成,本系统是由PHP程序语言开发二次,该系统囊括了数十万轴承型号,保护了国内外知名轴承品牌例如:GMN轴承、GRW轴承、FAG轴承、INA轴承等等知名品牌轴承,并且轴承程序再不断完善中。

Shandong

Shandong Zhongji Intelligent Equipment Co.,LTd.

奋斗号

奋斗号每日发布各领域值得关注的干货信息,为努力奋斗的年轻人提供最前沿的资讯,致力于让迷茫的年轻人早日找到属于自己的人生方向。

户外炊具

户外炊具,驴友论坛(bbs.lvy.cn)是驴友活动、背包客穷游、自驾等户外活动论坛!

阿呆潮装馆的DJ舞曲

该站点未添加描述description...