前言

油猴脚本(Tampermonkey)是一个非常流行的浏览器扩展,它可以运行由广大社区编写的扩展脚本,来实现各式各样的功能,常见的去广告、修改样式文件、甚至是下载视频。今天我们就来看看如何编写自己的油猴脚本。当然为了运行油猴脚本,你应该在浏览器中安装油猴插件。

油猴脚本文档

安装

在chrome / firefox /edge 这些浏览器的扩展商店直接搜索 Tampermonkey 即可

脚本编写方法

功能注释

首先来看看脚本的内容,在油猴脚本最开始有很多行注释,这些注释可以非常有用的,它表明了脚本的各个属性。下面来简单介绍一下。

属性名 作用
@name
油猴脚本的名字
@namespace 命名空间,类似于Java的包名,用来区分相同名称的脚本,一般写成作者名字或者网址就可以了
@version 脚本版本,油猴脚本的更新会读取这个版本号
@description 描述,用来告诉用户这个脚本是干什么用的
@author 作者名字
@match 只有匹配的网址才会执行对应的脚本,例如、http://、http://www.baidu.com/*等,参见谷歌开发者文档
@grant 指定脚本运行所需权限,如果脚本拥有相应的权限,就可以调用油猴扩展提供的API与浏览器进行交互。如果设置为none的话,则不使用沙箱环境,脚本会直接运行在网页的环境中,这时候无法使用大部分油猴扩展的API。如果不指定的话,油猴会默认添加几个最常用的API
@require 如果脚本依赖其他js库的话,可以使用require指令,在运行脚本之前先加载其他库,常见用法是加载jquery
@connect 当用户使用GM_xmlhttpRequest请求远程数据的时候,需要使用connect指定允许访问的域名,支持域名、子域名、IP地址以及*通配符
@updateURL 脚本更新网址,当油猴扩展检查更新的时候,会尝试从这个网址下载脚本,然后比对版本号确认是否更新
@include 脚本应该运行的页面。允许多个标签实例。请注意,@include 不支持 URL 哈希参数。
@exclude 排除 URL,即使它们被 @include 或 @match 包含 。允许多个标签实例。
@run-at 定义脚本被注入的时刻。// @run-at 【document-start|document-body|document-end|document-idle|context-menu】

脚本权限

grant指令那里可以填写的一些权限,详情请查看油猴脚本文档。这里就简单介绍几个常用的,可以调用的函数全部以GM_作为开头。

权限名 功能
unsafeWindow
允许脚本可以完整访问原始页面,包括原始页面的脚本和变量。
GM_getValue (name,defaultValue) 从油猴扩展的存储中访问数据。可以设置默认值,在没成功获取到数据的时候当做初始值。如果保存的是日期等类型的话,取出来的数据会变成文本,需要自己转换一下。
GM_setValue (name,value) 将数据保存到存储中
GM_xmlhttpRequest (details) 异步访问网页数据的API,这个方法比较复杂,有大量参数和回调,详情请参考官方文档。
GM_setClipboard (data, info) 将数据复制到剪贴板中,第一个参数是要复制的数据,第二个参数是MIME类型,用于指定复制的数据类型。
GM_log (message) 将日志打印到控制台中,可以使用F12开发者工具查看。
GM_addStyle (css) 像网页中添加自己的样式表。
GM_notification (details, ondone), GM_notification(text, title, image, onclick) 设置网页通知,请参考文档获取用法。
GM_openInTab (url, loadInBackground) 在浏览器中打开网页,可以设置是否在后台打开等几个选项
博客中所涉及到的图片都有版权,请谨慎使用