介绍
油猴最早指代 Firefox 的 Greasymonkey 扩展,后来又有开发者开发出了更强大的 Tampermonkey、Violentmonkey 扩展,尽管翻译分别为篡改猴、暴力猴,但如今也被统称为油猴。
油猴的作用就是在页面中加载用户脚本(UserScript),来实现一些自定义功能,比如去广告、解除复制限制等功能,使用语言就是 JavaScript。
各种 monkey 的选择
- Greasymonkey 目前已接近淘汰状态
- Tampermonkey 是最火热的,用户群体最多,大部分脚本都是基于 Tampermonkey 写的,所以兼容性最好,但不开源
- Violentmonkey 是开源的,但兼容性比 Tampermonkey 差一些,毕竟开发者少一些
脚本市场
脚本市场 Greasy Fork 提供了其他开发者写好的脚本,可以直接用。另外还有一些其他的市场,感觉没有这个好,就不推荐了。
如果熟悉 Tampermonkey 的 API,也可以自己动手写脚本。
注:
- 对于脚本市场中的脚本,一定要注意代码安全性
- 在控制台的 Element、Network 下都没有看到相应的插入脚本,可能和用户脚本(UserScript) 的概念有关,可能无法直接看到相应代码,暂未了解
脚本推荐
- 知乎增强:移除登录弹窗、屏蔽回答、默认站外直链等很多实用功能
- 知乎美化:屏蔽广告、宽屏样式
- Open the F**king URL Right Now:自动跳转某些网站不希望用户直达的外链
使用 VSCode 编辑脚本
Q402: I want to use an external editor to edit my scripts. How can this be done?
UserScript Sunday: How To Use VS Code as Your Userscripts Editor
在 Tampermonkey 编辑器中只保留 UserScript 开头部分
// ==UserScript==
// @name my script
// @require file:///Users/xxx/yyy.js
// ==/UserScript==
通过 @require 引入本地文件(@require 同样能引入远程脚本,如 jQuery、Vue)
// @require file:///Users/xxx/yyy.js
这样就可以用 VSCode 编辑了
注:
- 需要给 Tampermonkey 扩展赋予访问本地文件的权限
- 如果想模块化,那么本地可以新建多个 js 文件,把每一个都
@require
编写油猴脚本的注意点
@namespace:为防止不同脚本的变量命名互相干扰,可使用 @namespace 指定该脚本的命名空间
unsafeWindow:在调用 window 的方法时可能失败,因为在油猴中 window 表示油猴扩展的 window 对象,而非页面的 window,需要用 unsafeWindow 代替
@grant:若需要调用油猴提供的 API,首先要用 @grant 指定要用的 API