UTools,浏览器插件编写特辑

最近完成了我很早之前就想干的事,尝试编写浏览器插件,在探索途中,学习了一下编写UTools插件,与油猴插件,个人强烈建议。很多功能没有必要写浏览器插件,编写个油猴插件就好了,而且非常简单,这些插件几乎都是前端知识。

油猴插件

本质就是在匹配的url页面执行用户自定义js

常用注解含义

// ==UserScript==
// @name         MyTest   插件名称
// @namespace    http://sk.com/		插件项目地址同时也是区分不太作者的同名脚本
// @version      1.0	版本用于升级推送
// @description  Test	描述
// @author       Sk		作者
// @match        https://blog.csdn.net/*/article/details/* 哪些url该插件开启(就*一种通配符)
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 插件图标
// @grant        none	运行在沙箱中的权限 none 不运行在沙箱中 推荐使用
// @require      file://E:\网页\Tampermonkey\test.js	引入外部js
// ==/UserScript==

引入本地文件,直接在本地编辑器编写

打开插件运行访问本地文件

image-20210726130931224

插件注释引入本地js即可

image-20210726131029226

uTools插件编写

新建目录放置文件

image-20210726153843359

主配置文件(plugin.json)

{ //注意  真实项目中不允许注释
	"main": "index.html", //入口文件
	"logo": "logo.png", //图标
	"preload": "preload.js", //用于加载自定义js可以调用uTools官方函数(可选)
	"pluginSetting": { //插件设置 可选
		"single": false, //是否为单例(不允许多开)
		"height": 0 //插件界面高度 设置后用户无法修改
	},
	"features": [ //特性数组
		{
			"code": "hello", //区分不同功能的功能码 触发该特性返回该功能码
			"explain": "hello world", //对功能的解释
			"icon": "logo.png", //该功能图标(默认使用全局图标)
			"cmds": ["hello", "你好"] //如何进入该功能  任意一个输入匹配都可以
		},
		{
			"code": "test",
			"explain": "Test",
			"cmds": [{
				"type": "regex", // 类型(必须)正则输入匹配
				"label": "文本正则匹配", // 文字说明,在搜索列表中出现(必须)
				"match": "/xxx/i", // 正则表达式字符串
				"minLength": 1, // 长度限制(主输入框中的字符不少于) (可选)
				"maxLength": 1 // 长度限制(不多于) (可选)
			}, {

				"type": "img", // 类型(必须)选择的图片
				"label": "图片匹配" // 文字说明,在搜索列表中出现(必须)
			}, {
				"type": "files", // 类型(必须)  文件或文件夹匹配
				"label": "文件匹配", // 文字说明,在搜索列表中出现(必须)
				"fileType": "file", // 支持 file 或 directory (可选)
				"match": "/xxx/", // 文件名称正则匹配  (可选)
				"minLength": 1, // 文件数量限制(不少于) (可选)
				"maxLength": 1 // 文件数量限制(不多于) (可选)
			}, {
				"type": "window", // 类型(必须)更加当前置顶的窗口匹配
				"label": "窗口动作", // 文字说明,在搜索列表中出现(必须)
				"match": { // 窗口匹配规则
					"app": ["xxx.app", "xxx.exe"], // 应用 (可选)
					"title": "/xxxx/", // 匹配窗口标题的正则 (有配置时应用也必须配置) (可选)
					"class": ["xxx"] // 窗口类 Windows 专有 (可选)
				}
			}]
		}
	]
}

入口html文件(index.html部分)

<body>
    <h1>HelloWorld</h1>
    <script>
        utools.onPluginReady(() => {//插件准备完毕回调
            console.log('插件装配完成,已准备好')
        });//preload 指定的js与这里的js都可以随意使用  uTools函数
        //	进入插件回调		 自定义码  类型  负载信息
        utools.onPluginEnter(({code, type, payload}) => {
            console.log('用户进入插件', code, type, payload)
        });
    </script>
</body>

官方API列表

https://www.u.tools/docs/developer/api.html

安装开发者插件进行管理

image-20210726154322958

使用开发者工具进行调试

image-20210726154444340

谷歌浏览器插件开发

配置清单文件

{
	"manifest_version": 2,
	"name": "我的时钟",
	"version": "1.0", //最多3点4段  每个数字  0~65535
	"description": "我的第一个Chrome扩展",
	"icons": { //查看时的样子
		"16": "images/icon16.png", //可以指定不太尺寸的图标
		"48": "images/icon48.png",
		"128": "images/icon128.png"
	},
	"browser_action": { //放在工具栏的样子
		"default_icon": { //图标
			"19": "images/icon19.png",
			"38": "images/icon38.png"
		},
		"default_title": "我的时钟", //鼠标悬浮标题
		"default_popup": "popup.html" //单击时  显示的页面
	},
	"permissions": [//申请访问的 API网址
		"*://api.live.bilibili.com/*"
	],
	"content_scripts": [{ //用于指定JS注入
		"matches": ["*://fanyi.baidu.com/*"], //指定注入的url格式
		"js": ["js/axios.js","js/test1.js"] //注入的js  注意顺序 后面的可以使用前面的
	}],
    "background": {//指定在后台会一直运行的代码
		"scripts": [
			"js/test2.js"
		]
	}
}

html文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head><!--注意必须指定页面显示的大小-->
	<body style="width: 12.5rem;height: 12.5rem;">
		<h1>HelloWorld</h1>
		<h1>HelloWorld</h1>
	</body>
</html>

目录情况

image-20210727174359657

安装插件

image-20210727174813086

常用API

chrome.browserAction.setIcon({path: `images/icon${name[index]}.png`});// 设置工具栏图标
chrome.contextMenus.create({//创建右键菜单 必须有 contextMenus 权限  必须写在background js中
	type: 'normal',
	title: 'Menu A',
	id: 'a'
});
chrome.contextMenus.create({
	type: 'radio',
	title: 'Menu B',
	id: 'b',
	checked: true
});
chrome.contextMenus.create({
	type: 'normal',
	title: '使用Google翻译:%s',//%s获取选择文本
	id: 'cn',
	contexts: ['selection']//设置触发该右键菜单的上下文(鼠标框选)
});

谷歌官方API文档

https://developer.chrome.com/docs/extensions/reference/

推荐学习

https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

谷歌浏览器APP开发与扩展开发极其相似

image-20210727221550611

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值