油猴脚本编写教程
前言#
油猴脚本(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) 在浏览器中打开网页,可以设置是否在后台打开等几个选项 |
作者:水车
出处:https://www.cnblogs.com/shuiche/p/14360839.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
推荐一个激活软件下载站:mac.shuiche.cc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现