前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tampermonkey的安装与使用

Tampermonkey的安装与使用

作者头像
PayneWu
发布2021-06-10 14:32:40
2.2K0
发布2021-06-10 14:32:40
举报
文章被收录于专栏:积跬Coder积跬Coder

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,虽然有些受支持的浏览器拥有原生的用户脚本支持,但 Tampermonkey 将在您的用户脚本管理方面提供更多的便利。 它提供了诸如便捷脚本安装、自动更新检查、标签中的脚本运行状况速览、内置的编辑器等众多功能, 同时Tampermonkey还有可能正常运行原本并不兼容的脚本。

Tampermonkey的安装

方式一 Chrome商店直接下载

Chrome商店 -> 搜索 Tampermonkey -> Tampermonkey 安装即可

一般情况下是无法下载的,除非你能。。。

方式二:第三方网站进行插件文件下载

进入https://www.crx4chrome.com/crx/755/进行安装文件的下载,下载完成后。打开拓展程序(Chrome用户选项框 -> 更多工具 -> 拓展程序)

进入如下图所示的界面

打开右上角的 开发者模式,将已经下载的文件拖拽至上图所示的界面。即可完成安装。

使用第三方脚本

进入greasyfork https://greasyfork.org/zh-CN/scripts 获取需要的插件脚本即可

自定义开发脚本

鼠标点击Tampermonkey图标呼出其选项卡,点击添加脚本。即可进入新建脚本界面。

语法规则
代码语言:javascript
复制
// ==UserScript==
// @key value
// ==/UserScript==
字段释意:
基本信息

@name:脚本的名字(自定义)

@author 作者。该脚本的作者。可使用默认的you,或者你的名字

@description 脚本描述(类似于编程中的注释,阐述该脚本的作用等)

命名空间

@namespace 脚本的命名空间(通常使用默认http://tampermonkey.net/,也可指定)

@homepage, @homepageURL, @website and @source 在选项页面使用的作者主页,用于从脚本名称链接到给定页面。如果@namespace 标记以“http://”开头,则其内容也将用于此目的。

版本控制

@version 脚本版本号

@updateURL:用户脚本的更新 URL。注意:需要一个@version 标签才能使更新检查工作

@downloadURL:URL定义检测到更新时下载脚本的 URL。如果使用值 none,则不会进行更新检查。

@supportURL 定义用户可以报告问题并获得个人支持的 URL。

访问限制

@include

脚本允许运行的页面,可以是多个标签实例。支持正则语句

注意: @include 不支持 URL 哈希参数,必须匹配没有哈希参数的路径并使用

示例:

代码语言:javascript
复制
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      https://www.tampermonkey.net/documentation.php?ext=dhdg
// @icon         https://www.google.com/s2/favicons?domain=tampermonkey.net
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...
    alert('HEllo')
})();

保存后,当我们访问https://www.tampermonkey.net/documentation.php?ext=dhdg的时候将会弹出Hello。如下图所示

当@match 为 * 时,当访问任何一个页面都会alter出对应的内容来。如下图所示

@match

@match 与 @include 非常相似,然而@match更安全。它对 * 字符的含义设置了更严格的规则。

@match 与 @include他们都是匹配基于一组由匹配模式定义的 URL。匹配模式本质上是以允许的方案开头的 URL。匹配模式本质上是以允许的方案(http、https、file 或 ftp,并且可以包含“*”字符)开头的 URL。特殊模式匹配以允许的方案开头的任何 URL。

'*' 的含义取决于它是在方案、主机还是路径部分。如果方案是 *,则它匹配 http 或 https,而不匹配 file、ftp 或 urn。如果主机只是 *,那么它匹配任何主机。如果主机是 *.hostname,则它匹配指定的主机或其任何子域。在路径部分,每个 '*' 匹配 0 个或多个字符。

@match 与 @include区别请参考 https://wiki.greasespot.net/Metadata_Block#.40match 匹配规则 https://developer.chrome.com/docs/extensions/mv3/match_patterns/

简单来说推荐使用@match

@exclude

不匹配,相当于访问黑名单。如果访问了@exclude中与之匹配的内容则不执行自定义的JavaScript代码

@exclude优先权大于match和@include。如果二者都匹配了,那么默认执行@exclude规则。也就是说即是’白名单‘也是’黑名单‘那么默认为’黑名单‘

第三方链接

@require

指向在脚本本身开始运行之前加载和执行的 JavaScript 文件。

脚本中可以有任意数量的@require 键。每个 @require 在安装脚本时下载一次,并与脚本一起存储在用户的硬盘驱动器上。指定的 URL 可能与安装脚本的 URL 相关。

@resource

预加载可由脚本通过 GM_getResourceURL 和 GM_getResourceText 访问的资源。

虽然 resourceName 是非语义的,但它应该符合 JavaScript 标识符限制。每个@resource 必须有一个唯一的名称。 每个@resource 在安装脚本时下载一次,并与脚本一起存储在用户的硬盘驱动器上。指定的 URL 可能与安装脚本的 URL 相关。 这些命名资源可以分别通过GM_getResourceText和GM_getResourceURL访问。

@connect

此标签定义域(无顶级域),包括允许通过 GM_xmlhttpRequest 检索的子域

可以简单的理解为发送请求。GET、POST、HEAD

@run-at

定义脚本被注入的时刻,与其他脚本处理程序相反, @run-at 定义了脚本想要运行的第一个可能时刻。这意味着可能会发生,使用 @require 标签的脚本可能会在文档加载后执行,导致获取所需脚本需要很长时间。无论如何,在给定注入时刻之后发生的所有 DOMNodeInserted 和 DOMContentLoaded 事件都被缓存并在注入时传递给脚本。

@run-at document-start 脚本将尽快注入。 @run-at document-body 如果 body 元素存在,脚本将被注入 @run-at document-end 该脚本将在调度 DOMContentLoaded 事件时或之后注入。 @run-at document-idle 脚本将在 DOMContentLoaded 事件被调度后注入。如果没有给出@run-at 标签,这是默认值。 @run-at context-menu 如果在浏览器上下文菜单中单击该脚本(仅限基于 Chrome 的桌面浏览器),则会注入该脚本。

建议使用@run-at document-start

@grant

@grant 用于将 GM_* 函数、unsafeWindow 对象和一些强大的窗口函数列入白名单。如果没有给出@grant 标签,TM 猜测脚本需要。

代码语言:javascript
复制
// @grant GM_setValue// @grant GM_getValue// @grant GM_setClipboard// @grant unsafeWindow// @grant window.close// @grant window.focus// @grant window.onurlchange

由于关闭和聚焦选项卡是一项强大的功能,因此也需要将其添加到 @grant 语句中。

如果脚本在单页应用程序上运行,那么它可以使用 window.onurlchange 来监听 URL 更改:

代码语言:javascript
复制
// ==UserScript==...// @grant window.onurlchange// ==/UserScript==if (window.onurlchange === null) {  // feature is supported  window.addEventListener('urlchange', (info) => ...);}

如果@grant 后跟“none”,则沙箱将被禁用,脚本将直接在页面上下文中运行。在此模式下,没有 GM_* 功能,但 GM_info 属性将可用。

代码语言:javascript
复制
// @grant none

推荐使用@grant none

@noframes

此标记使脚本在主页上运行,但不在 iframe 上运行。

Reference

  • Tampermonkey官方地址:https://www.tampermonkey.net/
  • Tampermonkey官方文档:https://www.tampermonkey.net/documentation.php?ext=dhdg
  • https://wiki.greasespot.net/Metadata_Block#.40match
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 积跬Coder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tampermonkey的安装
    • 方式一 Chrome商店直接下载
      • 方式二:第三方网站进行插件文件下载
      • 使用第三方脚本
      • 自定义开发脚本
        • 语法规则
          • 字段释意:
            • 基本信息
            • 命名空间
            • 版本控制
            • 访问限制
            • 第三方链接
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档