【轻松上手】油猴脚本开发(上)
注:本文的油猴特指 Tampermonkey。
油猴脚本运行于油猴插件之上,油猴插件本质上对浏览器能力的再封装。既然如此,我们先来简单了解一下浏览器插件。
浏览器插件(Browser Extension):浏览器的扩展应用
说的直白一点,就是拿着浏览器开放的能力(插件 API),去实现一些小型应用。
浏览器插件主要由四部分构成:background scripts、content scripts、全局 UI 元素、options page。
background scrips: 后台脚本,一个后台脚本是一个独立线程,是游离于各个页面之外的“上帝之眼”。具有访问各类插件 API 的能力,但同时也丧失了直接操作页面的能力;
content scripts:内容脚本,具有直接操作页面的能力。其实就是在页面中运行 js 脚本,可以使用 DOM API。content script 只能直接访问少量插件 API,但能和 background script 进行双向通信完成数据交换;
全局 UI 元素:浏览器层的 UI 交互,包括
在 Toolbar 显示 icon,定义点击 icon 后显示的 Popup 或其他效果
增加右键选项
增加全局快捷键
改造新 Tab 页、历史记录页、书签页
options page:插件配置页
浏览器插件的核心机制可以用下图简单概括
想必,大家最好奇的还是有哪些 API 以及能用这些 API 做什么,这里例举几个:
contextMenus:增加右键选项
使用选中文本,例如:划词翻译、文本收集
快速调用插件功能,例如:打开 DevTool,页面剪藏
cookies:增删改查 cookie(任意域名),直接拿着本地 cookie 发送请求,不必再做授权。同时由于后台脚本不是 Web 页面,在发送请求时没有跨域限制。:
多平台信息聚合
多平台信息分发
devtools.panels:增加 Devtool 面板,这个对前端开发者来说应该很熟悉,React Developer Tools、Vue.js devtools
notifications:浏览器通知,未打开页面的情况下进行通知,可以辅助一些工具类应用
storage:全局保存数据,可跟随浏览器账户同步
这里例举的只是我常用的一些,只是沧海一粟,更多 API 可以查阅
Chrome Extension API Reference
支持用于扩展 Microsoft Edge API
Mozilla WebExtensions API
浏览器插件就简单介绍到这里,如果有兴趣继续了解,推荐:Chrome,Edge,Mozilla 三家的文档。
油猴插件(Tampermonkey)
浏览器插件可以实现各式各样的功能,但有时候开发者只是想对某一个站点加一点点小功能,如果这也要构建环境打包上架分发,未免就太麻烦了一些;从应用市场角度来看,充斥着颗粒化的应用,市场也会拥挤繁杂不堪。
油猴插件为轻量化脚本提供了一个平台,在线编辑器中编写油猴脚本即时生效,通过 Github、GreasyFork 快速分发。
在油猴插件中, content script 起到非常重要的角色,它将用户编写的代码运行在页面中,同时提供 GM_xxxx 函数封装浏览器的部分能力。封装的内部实现是和 background script 通信,驱动 background script 调用插件 API。
对油猴插件简单了解之后,来看看如何编写油猴脚本。
Tampermonkey API
油猴脚本由头部和核心逻辑两部分组成
js
复制代码
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.tampermonkey.net/documentation.php?ext=dhdg
// @icon https://www.google.com/s2/favicons?domain=tampermonkey.net
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
})();
头部是脚本的一些元信息、更新方式、指定运行页面、权限声明,逐一解释一下
核心逻辑通过一个立即执行函数包裹,避免和全局作用域相互干扰。Tampermonkey 将浏览器的部分能力封装为 GM_XXX 函数以供调用。
完整的说明文档:Tampermonkey documentation
内容来自网友分享,若违规或者侵犯您的权益,请联系我们
所有跟帖: ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )
楼主前期社区热帖:
>>>>查看更多楼主社区动态...