[编程交流]Tampermonkey脚本编写
[编程交流]Tampermonkey脚本编写
前言
越来越多的人使用脚本,而目前最火的Chrome脚本插件之一的是Tampermonkey(黑猴子)。这篇文章在阅读者会JavaScript的基础上额外介绍了Tampermonkey的语法。如果不会JS请专门去学习。
以下是本篇文章正文内容,下面案例可供参考
一、Tampermonkey是什么?
Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。
虽然有些受支持的浏览器拥有原生的用户脚本支持,但 Tampermonkey 将在您的用户脚本管理方面提供更多的便利。 它提供了诸如便捷脚本安装、自动更新检查、标签中的脚本运行状况速览、内置的编辑器等众多功能, 同时Tampermonkey还有可能正常运行原本并不兼容的脚本。
二、特色
1.方便的脚本管理
Tampermonkey 使管理您的用户脚本变得非常简单。位于右上方的 Tampermonkey 图标显示正在运行的脚本的数量,单击图标就可以看到正在运行的脚本和可能在这个网页上运行的脚本。
2.脚本概览
Tampermonkey 概览清晰地显示所有安装的脚本。您可以看到它们最后的更新时间,如果它们有自己的主页,您还可以对它们进行分类和其他更多的功能...
技巧 :也可以在这里管理那些作为 Chromium 插件来安装的脚本。
3.设置多样性
您可以为设置页面在三种不同的等级中进行选择。不常用的选项将被隐藏,通过这种方式来简化页面。
4.脚本自动更新
您可以对脚本的检查更新频率进行设置。不再因为过时的脚本而产生漏洞。: )
5.安全
6.兼容性
许多为火狐用户脚本管理器攥写的用户脚本叫做 Greasemonkey (<= 3.x),这就是为什么 Tampermonkey 要提供一个兼容层并自动检测配套设置。
7.Chrome 同步
您正在使用多个 Chrome 浏览器,一个家用,一个工作用?您希望您可以同步自己的脚本?那么,您仅需设置 Tampermonkey 的同步功能。
8.CodeMirror 编辑器
您需要开发并编辑一个脚本?没问题!Tampermonkey 提供一个嵌入式的编辑器。
9.JSHint 语法检查
<#a href="https://www.tampermonkey.net/images/editor.png">
您的脚本无法运行?Tampermonkey 的语法检查或许可以帮您找到问题... : )
10.快速开发
Tampermonkey 的编辑器是很棒的,然而您拥有自己的编辑器,它更快、更好……解决办法是启用“允许访问文件网址”,然后您就可以通过@require调用您脚本的本地副本了。
三、下载
1.Tampermonkey Stable
也可以从各大Chrome应用商店下载此插件。
2.Tampermonkey Beta
下载地址(谷歌)
也可以从各大Chrome应用商店下载此插件。
四、语法
实用示例:
// ==UserScript==
// @name New Userscript //脚本名
// @namespace https://example.net
// @version 0.1 //脚本版本
// @description try to take over the world! //脚本功能描述
// @author You //作者名称
// @match https://example.net //要在哪些网站使用该脚本,亦可使用include,此外可以用exclude来排除某些网站包含的页面
// @grant none
// @note //代码笔记,发布时会公开在脚本里
// ==/UserScript==
(function() {
'use strict';
// 这里写需要的JavaScript代码
})();
脚本元素属性值列表:
§@name
脚本的名称。该项将显示在页面的标题以及链接内容,必填项。
§@name:XX-YY
脚本在特定语言区域的标题。XX 指 ISO 639-1 国家代码 以及 YY 指可选的 ISO 3166 地区代码。该选项用于提供多语言的@name 脚本名称。
§@description
脚本功能的描述,显示在脚本标题下面,必填项。
§@description:XX-YY
用某门语言写成的脚本描述。XX 指 ISO 639-1 国家代码 以及 YY 指可选的 ISO 3166 地区代码。该选项用于提供多语言的@description 脚本介绍。
§@namespace
@namespace 与 @name 这两个属性被作为脚本的唯一标识符,用户脚本管理器根据它们来判断一个脚本是否已安装。Greasy Fork 也需要这些属性,若用户在更新脚本时改变了两者中的任意一项,将发出警告。
§@version
脚本的版本标记将使用 Mozilla 版本格式 并显示于脚本的简介页面。Greasy Fork 要求填写该属性,且当用户更新脚本时没有更新版本号或降低了版本号时将发出警告。
§@include
, @exclude
, @match
描述脚本会在哪些网站上运行。该列表会被解析和展示到脚本的简介页面,并用于脚本的分类。每个脚本须有至少一个 @match 或 @include。了解格式细则。
§@require
在您的脚本中引用其他外部脚本。请参见 包含外部脚本的使用规定。
§@updateURL, @installURL, @downloadURL
告知用户脚本管理器应该在哪个地址获取脚本更新。Greasy Fork 将自动修改该属性使其永远通过 Greasy Fork 进行更新。
§@license
许可协议描述的是您是否允许别人以某些形式复制或修改您的脚本。建议从 SPDX 许可协议列表 中选择「Full name」或「Identifier」填至此处。若您不提供许可协议,则表示仅允许个人使用且不得二次分发。许可协议将在脚本的简介页面显示。
§@supportURL
该脚本的技术支持链接(如:错误反馈系统、论坛、电子邮件等),该链接将显示在脚本的反馈页面。
§@contributionURL
用于捐赠脚本作者的链接,该链接将显示在脚本的反馈页面。网址可以为 http、https 或比特币协议的网址。如果您需要链接到贝宝捐赠页面,请使用例如 https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=your.email.here@example.com&item_name=Greasy+Fork+donation 这样的格式,替换为您自己的邮箱即可。
§@contributionAmount
建议捐赠金额,请配合 @contributionURL 使用。
§@compatible
标记此脚本与某个浏览器兼容,兼容性信息将显示在脚本的简介页面上。您也可以添加额外的兼容说明,如 @compatible firefox 火狐上必须关闭广告过滤器 这样的格式。目前能被网站识别的浏览器名称有:firefox, chrome, opera, safari, edge。
§@incompatible
标记此脚本与某个浏览器不兼容,兼容性信息将显示在脚本的简介页面上。您也可以添加额外的兼容说明,如 @incompatible firefox 自火狐 23 开始不兼容 这样的写法。目前能被网站识别的浏览器名称有:firefox, chrome, opera, safari, edge。
§@antifeature
披露会为脚本作者而非用户带来额外收益的功能。你可以通过在脚本的元数据中添加 @antifeature <类型> <描述> 值的方法披露。Greasy Fork 会解析这几种类型:ads (该脚本会展示广告给脚本使用者)、 tracking (该脚本会追踪用户的活动)、miner(该脚本含有虚拟货币挖矿代码)以及referral-link(脚本会重写或重定向链接来添加推荐/返利代码),而其它类型的值将会被忽略。即便如此,脚本也必须遵守 Greasy Fork 的规则。描述段可以留空。
§@antifeature
:XX-YY
你可以使用多种语言声明 @antifeature 属性,其中 XX 为 ISO 639-1 中定义的两个字符的代码,而 YY 则是一个可选的 ISO 3166 中定义的国家代码。在@antifeature中制定的每一个类型都可以自定义其本地化的说明。
五、用户脚本
你可以在这里搜索下载你所需要的其他人发布的脚本
Userscript.Zone Search
Userscript.Zone Search 是一个新网站,允许通过输入合适的URL或域来搜索用户脚本。
大量的脚本资源
很容易找到合适的用户脚本
仅显示受审核的用户脚本页面或至少具有注释功能的页面中的用户脚本
GitHub/Gist
你可以在 Github 和 Gist 中 搜索脚本资源。
GreasyFork
GreasyFork 或许是最受欢迎的后起之秀了。它由 Jason Barnabe 创建,Jason Barnabe 同时也是 Stylish 网站的创办者,在其储存库中有大量的脚本资源。
大量的脚本资源
拥有可以从 Github 中进行脚本同步的功能
非常活跃的开放源代码发展模式
OpenUserJS
OpenUserJS 继 GreasyFork 之后开始创办。它由 Sizzle McTwizzle 创建,同样地,在其储存库中也拥有大量的脚本资源。
大量的脚本资源
拥有可以从 Github、fork scripts 中进行脚本同步的功能
非常活跃的开放源代码发展模式
@SquareBlock
一个普通高中生