【Tampermonkey】油猴脚本入门

1. 概括

油猴脚本(Tampermonkey script)是一种可以在网页加载时自动运行的自定义JavaScript代码,允许用户修改网页内容或添加新功能,以增强浏览体验。一句话概括:

油猴脚本是用户编写的小程序,能够在浏览器中自动修改网页行为和外观,从而实现个性化定制和增强功能。

2. 说明

以下教程适用于使用 Chromium 内核的浏览器,包括Chrome、Edge等。

Chrome因为插件商店无法访问,还有版本问题无法安装旧插件,所以不建议初学者使用。

下面以Edge为例子,大部分步骤应该是相似的,但界面布局或菜单名称可能会略有不同。

3. 基础

3.1 JavaScript

  • 核心语言:JavaScript 是编写油猴脚本的主要语言。你需要熟悉 JavaScript 的语法、变量、函数、条件语句、循环等基础知识。
  • DOM 操作:了解如何通过 JavaScript 操作网页的文档对象模型 (DOM),包括选择元素、修改内容、添加或移除元素等。
  • 事件处理:掌握如何监听和响应用户交互事件,如点击、输入、加载完成等。

3.2 HTML 和 CSS

  • HTML:理解 HTML 标签和结构,因为你的脚本可能会操作这些标签来修改网页内容。
  • CSS:虽然油猴脚本主要用 JavaScript 编写,但你可能需要使用 CSS 来美化自定义界面或调整页面样式。

4. 安装

4.1 官网下载

首页 | Tampermonkey

4.1.1 Chrome

Chrome插件商店需要魔法,在Chrome上安装,直接点击灰色按钮在当前页面下载即可,需要最新版本,否则会安装失败。

4.1.2 Edge

推荐使用与Chrome内核相同的Edge浏览器,能够直接访问插件商城,点击获取然后添加扩展既可。

4.2 安装验证

扩展 -> 在工具栏显示,以便后续操作。

5. 第一个脚本

5.1 添加新脚本

5.2 默认代码

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      2024-12-13
// @description  try to take over the world!
// @author       You
// @match        https://tongyi.aliyun.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=aliyun.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
})();

5.2.1 元数据块(Metadata Block)

元数据块是每个油猴脚本的核心部分,它使用特殊的注释语法来定义脚本的各种属性和配置。

  • @name:脚本的名称。这里可以填写任何你想给脚本的名字。

    // @name         新脚本
  • @namespace:命名空间用于避免脚本之间的冲突。通常可以使用你的网站或邮箱地址作为命名空间。

    // @namespace    http://tampermonkey.net/
  • @version:脚本的版本号,便于管理和更新。

    // @version      0.1
  • @description:对脚本功能的简要描述。

    // @description  try to take over the world!
  • @author:脚本作者的名字。

    // @author       You
  • @match:指定脚本应该在哪些网址上运行。通配符 *://*/* 表示匹配所有网址。你可以根据需要添加多个 @match 行来限定脚本运行的具体页面。

    // @match        *://*/*
  • @icon:为脚本指定一个图标。这通常是通过提供图标的 URL 来实现的。

    // @icon         https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
  • @grant:声明脚本所需的权限。none 表示不需要特殊权限;如果你需要进行跨域请求或其他高级操作,则可能需要指定如 GM_xmlhttpRequestGM_setValue 等权限。

    // @grant        none
5.2.2 主函数 (IIFE)

紧接元数据块之后的是一个立即执行函数表达式 (Immediately Invoked Function Expression, IIFE),它用来封装脚本的主体代码。这种模式有助于防止变量泄漏到全局作用域,并确保代码在合适的上下文中运行。

(function() {
    'use strict';

    // Your code here...
})();
  • 'use strict';:启用严格模式,使 JavaScript 引擎以更严格的规则解析代码,有助于发现潜在的错误和提高代码质量。

  • // Your code here...:这是你放置实际 JavaScript 代码的地方。你可以在这里编写逻辑,操作 DOM,监听事件等。

5.3 修改默认代码

假设你想创建一个简单的脚本,在页面顶部显示一条问候信息,可以这样扩展默认代码:

// ==UserScript==
// @name         匹配所有网站
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  在页面顶部显示一条友好的问候信息
// @author       新手开发者
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个新的 <div> 元素
    let greeting = document.createElement('div');
    greeting.style.position = 'fixed';
    greeting.style.top = '10px';
    greeting.style.left = '10px';
    greeting.style.backgroundColor = '#f9f9f9';
    greeting.style.padding = '10px';
    greeting.style.border = '1px solid #ddd';
    greeting.style.zIndex = '10000';

    // 设置文本内容
    greeting.textContent = '欢迎来到这个页面!';

    // 将新元素添加到文档中
    document.body.appendChild(greeting);
})();

5.4 效果

保存后返回任意网页,点击油猴图标会出现刚才写好的脚本。

在任何页面刷新,左上角出现“欢迎来到这个页面!”字样说明该脚本执行成功。

注:这里的脚本会在所有与表达式*://*/*匹配成功的网站生效,如果只在单一的网站生效,以百度举例,可以写成:http*://www.baidu.com*,用通配符*号匹配所有。

6. 更新

6.1 更新元数据块

在每次更新脚本时,确保更新元数据块中的相关信息:

  • @version:递增版本号,例如从 0.1 升级到 0.2
  • @description:更新描述以反映新功能或修复的问题。
  • 其他字段:如果有必要,也可以更新 @name@match 等字段。
// ==UserScript==
// @name         页面问候语
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在页面顶部显示一条友好的问候信息,并增加了更多样式选项
// @author       新手开发者
// @match        *://*/*
// @grant        none
// ==/UserScript==

6.2 编写更新日志

维护一个更新日志(changelog),记录每次更新的具体内容。这有助于用户了解新版本带来了哪些变化。你可以将更新日志放在脚本的注释部分或者单独创建一个文件保存。

// 更新日志:
// v0.2 - 2024-12-13
//   - 增加了更多的样式选项
//   - 修复了某些浏览器上的兼容性问题
// v0.1 - 2024-12-10
//   - 初始发布

 7. 导出/导入

在管理面板中的实用工具里

7.1 导出

7.2 导入

7.3 注意

从油猴导出的文件为txt格式,包含全部脚本,不能直接在GreasyFork 中导入发布。

8. 发布

8.1 Greasy Fork

这里发布以用户使用最多的Greasy Fork为例

Greasy Fork:Greasy Fork - 安全且实用的用户脚本站

由 Jason Barnabe 创建,Jason Barnabe 同时也是Stylish 网站的创办者,在其储存库中有大量的脚本资源。

8.2 步骤

8.2.1 登录注册账号

8.2.2 点击用户中心

8.2.3 发布你编写的脚本

8.2.4 直接编辑或者本地上传js文件

8.2.5 添加声明

添加 @license 字段

明确许可证声明,在元数据块中添加 @license 行。

比较常见的许可证声明方式:

8.2.5.1 MIT License

MIT 许可证是一个非常宽松的开源许可证,允许几乎任何用途,包括商业用途,但需要保留版权声明和许可声明。

// ==UserScript==
// @name         页面问候语
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在页面顶部显示一条友好的问候信息,并增加了更多样式选项
// @author       新手开发者
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==
8.2.5.2 GPL-3.0 License

GNU 通用公共许可证(GPL)是另一个常用的开源许可证,要求衍生作品也必须以相同的许可证发布。

// ==UserScript==
// @name         页面问候语
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在页面顶部显示一条友好的问候信息,并增加了更多样式选项
// @author       新手开发者
// @match        *://*/*
// @grant        none
// @license      GPL-3.0
// ==/UserScript==
8.2.5.3 Apache License 2.0

Apache 许可证 2.0 是一个带有专利授权条款的开源许可证,适合那些希望保护自己知识产权但仍希望分享代码的人。

// ==UserScript==
// @name         页面问候语
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在页面顶部显示一条友好的问候信息,并增加了更多样式选项
// @author       新手开发者
// @match        *://*/*
// @grant        none
// @license      Apache-2.0
// ==/UserScript==
8.2.5.4 Unlicense

如果你希望将代码完全公开,不保留任何权利,可以选择 Unlicense。

// ==UserScript==
// @name         页面问候语
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  在页面顶部显示一条友好的问候信息,并增加了更多样式选项
// @author       新手开发者
// @match        *://*/*
// @grant        none
// @license      Unlicense
// ==/UserScript==

9. 获取别人的脚本

这里面的网站集合了大量别人编写好的脚本,可供自己下载使用

用户脚本 | Tampermonkey

10. 官方文档

文档 | Tampermonkey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值