前言
油猴脚本(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) 在浏览器中打开网页,可以设置是否在后台打开等几个选项 |