Toolkit

Toolkit

GreasyMonkey 脚本工具类

因脚本中一些基础功能函数需要复用,所以写了这个小的工具库。为对用户安全负责,并符合 GreasyFork 审核规则,代码未作压缩,仅用 Parcel 简单过了一下,一方面是为了用 babel 转码,另一方为后期分文件书写不同类别功能做准备。这导致代码中注释未能精确对应,使用方法请依照此说明

Constructor

new Toolkit()

Source:

Classes

exports.Toolkit

引入方法

Members

(static) version

当前库的版本号

Source:

(static) is_debug

当前是否处于 debug 状态。

Source:

Debug 模式开启方法: 手动为此脚本设置一个数据: is_debug: 1(在脚本设置页面中)。值可以任意,因为会当作字符串处理,所以不为空即为真。

注意: 这需要 GM_getValue API 的支持

Methods

info(by, …args)

日志输出

Source:

console.info 方法输出信息。如多条内容,则以折叠组的形式输出。主要为了便于 debug。

Example
DMSTookit.info('Demo', 'Some thing want to print to console.')  // 仅一项需输出内容
DMSTookit.info('Demo', 'Some thing want to print to console.', 'And more.')  // 多项输出内容
Parameters:
Name Type Attributes Description
by string

由信息来源标识

args any <repeatable>

输出内容,任意多个参数

dblog(by, …args)

Debug 输出,仅开发时输出

Source:

.info 方法输出。但仅在 .is_debug 为真时输出。这样在发布版本时可不删除这些调试内容。参数同 Toolkit#info

Parameters:
Name Type Attributes Description
by string

由信息来源标识

args any <repeatable>

输出内容,任意多个参数

badge(leftText, rightText, endText, options)

徽章输出

Source:

类似这种效果 , 但并不一致。具体可在引用此库,并正确初始化后看控制台输出。其实除了好看也没什么特别的用途。

Example
DMSTookit.badge(
  'DMS UserScripts Toolkit',
  DMSTookit.version,
  'https://greasyfork.org/zh-CN/scripts/408776'
)
Parameters:
Name Type Default Description
leftText string

徽章左侧文字

rightText string

徽章右侧文字

endText string

徽章后描述

options object {}

徽章配置项

  • options.leftBGColor 左侧文字背景色
  • options.leftColor 左侧文字颜色
  • options.rightBGColor 右侧文字背景色
  • options.rightColor 右侧文字颜色

getData(type, dataName, defaultValue)

获取存储中的数据

Source:

基础方法,当接口不可用时会直接抛出错误,不建议直接使用。提供如下语法糖:

  • getGMDatatype 指定为 GM,然后省略此参数
  • getLocalDatatype 指定为 local,然后省略此参数
  • getSessionDatatype 指定为 session,然后省略此参数
Parameters:
Name Type Default Description
type string

存储类型,可用值如下:

  • GM 脚本管理器提供的数据存储
  • local localStorage 数据
  • session sessionStorage 数据
  • cookie cookie 数据(暂未提供
dataName string

数据名称

defaultValue any false

默认值,可省略

setData(type, dataName, value)

设置存储中的数据

Source:

基础方法,当接口不可用时会直接抛出错误,不建议直接使用。提供如下语法糖:

  • setGMDatatype 指定为 GM,然后省略此参数
  • setLocalDatatype 指定为 local,然后省略此参数
  • setSessionDatatype 指定为 session,然后省略此参数
Parameters:
Name Type Description
type string

存储类型,可用值如下:

  • GM 脚本管理器提供的数据存储
  • local localStorage 数据
  • session sessionStorage 数据
  • cookie cookie 数据(暂未提供
dataName string

数据名称

value any

要写入的值,如不存在则删除该数据

removeData(type, dataName)

移除存储中的数据

Source:

基础方法,当接口不可用时会直接抛出错误,不建议直接使用。提供如下语法糖:

  • removeGMDatatype 指定为 GM,然后省略此参数
  • removeLocalDatatype 指定为 local,然后省略此参数
  • removeSessionDatatype 指定为 session,然后省略此参数
Parameters:
Name Type Description
type string

存储类型,可用值如下:

  • GM 脚本管理器提供的数据存储
  • local localStorage 数据
  • session sessionStorage 数据
  • cookie cookie 数据(暂未提供
dataName string

数据名称

listData(type, dataName)

移除存储中的数据

Source:

基础方法,当接口不可用时会直接抛出错误,不建议直接使用。提供如下语法糖:

  • removeGMDatatype 指定为 GM,然后省略此参数
  • removeLocalDatatype 指定为 local,然后省略此参数
  • removeSessionDatatype 指定为 session,然后省略此参数
Parameters:
Name Type Description
type string

存储类型,可用值如下:

  • GM 脚本管理器提供的数据存储
  • local localStorage 数据
  • session sessionStorage 数据
  • cookie cookie 数据(暂未提供
dataName string

数据名称

proxyData(type, dataName, defaultValue)

代理存储中的数据对象

Source:

基础方法,不建议直接使用。仅用 new Proxy() 方法简单代理了数据的 getset,可以满足简单的数据操作需求,复杂情况请自行书写代理。提供如下语法糖:

  • proxyGMDatatype 指定为 GM,然后省略此参数
  • proxyLocalDatatype 指定为 local,然后省略此参数
  • proxySessionDatatype 指定为 session,然后省略此参数
  • proxyDataAuto 脚本数据存储 API 可用的话 type 指定为 GM,否则为 local 即自动选择 type,然后省略此参数
Parameters:
Name Type Default Description
type string

存储类型,可用值如下:

  • GM 脚本管理器提供的数据存储
  • local localStorage 数据
  • session sessionStorage 数据
  • cookie cookie 数据(暂未提供
dataName string

数据名称

defaultValue any {}

默认值,可省略

proxyKey(type, dataName, defaultValue) → {function}

代理存储中的数据

Source:

基础方法,不建议直接使用。针对存储的单个数据进行简单代理。提供如下语法糖:

  • proxyGMKeytype 指定为 GM,然后省略此参数
  • proxyLocalKeytype 指定为 local,然后省略此参数
  • proxySessionKeytype 指定为 session,然后省略此参数
  • proxyKeyAuto 脚本数据存储 API 可用的话 type 指定为 GM,否则为 local 即自动选择 type,然后省略此参数
Parameters:
Name Type Default Description
type string

存储类型,可用值如下:

  • GM 脚本管理器提供的数据存储
  • local localStorage 数据
  • session sessionStorage 数据
  • cookie cookie 数据(暂未提供
dataName string

数据名称

defaultValue any false

默认值,可省略

Returns:

返回一个方法,无参数运行则获取对应存储的值,有参数运行则将参数值写入存储

Type
function

注册一个链接菜单

Source:

需要如下 API:

  • GM_registerMenuCommand 【必须】否则无法注册脚本菜单
  • GM_openInTab 【可选】可以更稳定的在新窗口打开链接
Example
DMSTookit.menuLink('更多脚本', 'https://script.izyx.xyz/')
Parameters:
Name Type Description
name string

菜单的名称

url url

链接地址,含协议部分(http://https://),否则可能按相对地址处理

注册一个切换菜单

Source:

因为不同管理器下菜单的反注册方式不太一样,所以最稳妥的方法是切换后刷新页面。如果不刷新页面,会用两种方法尝试反注册菜单。需要如下 API:

  • GM_registerMenuCommand 【必须】否则无法注册脚本菜单
  • GM_unregisterMenuCommand 【可选】无刷新切换时用来反注册菜单 提供如下语法糖:
  • menuToggle 菜单标记位于某个数据对象的属性上,用此方法可略显简便,详细参数在后面
  • menuDebug 注册一个 debug 状态的切换菜单,此方法无参数
Parameters:
Name Type Default Description
getter function

获取菜单状态标记

setter function

设置菜单状态标记

onName string

启用状态菜单文字

offName string

禁用状态菜单文字

reload boolean true

是否需要刷新页面,默认为是。当为否时会尝试两种方法反注册菜单,但并不推荐。

callback function

回调函数,当 reload=false 时可用,会传入当前菜单状态(truefalse

注册一个切换菜单,菜单标记位于储存数据对象的某个属性上

Source:
Parameters:
Name Type Default Description
optionsObject object

选项数据对象,推荐使用上面 proxyData 方法代理的数据,这样改变后可以直接存储

optionsProperty string

选项对象中对应的属性名称

onName string

启用状态菜单文字

offName string

禁用状态菜单文字

reload boolean true

是否需要刷新页面,默认为是。当为否时会尝试两种方法反注册菜单,但并不推荐。

callback function

回调函数,当 reload=false 时可用,会传入当前菜单状态(truefalse

pageObserverInit(targetEl, callback, obOptionsopt) → {object}

创建页面元素变化监控

Source:

用来实时跟踪页面元素变化,及时进行相应修改,但可能和页面程序产生冲突,在执行回调函数期间可能错过某些变化。仅作为对页面的元素的粗略追踪方法。

Parameters:
Name Type Attributes Default Description
targetEl object

要监控的元素对象

callback function

元素发生变化时执行的函数,应该为一个异步函数,会在执行此函数之间停止监控,等待此函数执行结束后再次启动监控

obOptions object <optional>
{}

监控设置项,参见: https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserverInit

Returns:

一个对象,提供两个方法,start 开始此监控,stop 停止此监控

Type
object

recordsPreProcessing(records)

MutationRecord 对象的预处理

Source:

根据变化类型将受到影响的元素放入数组并标记变化类型,方便后期直接通过对数组的遍历处理。

Parameters:
Name Type Description
records *

MutationRecord 对象。参见: https://developer.mozilla.org/zh-CN/docs/Web/API/MutationRecord

addStyle(cssString)

为页面添加样式

Source:

当没有 GM_addStyle 接口或执行错误时,使用替代方法

Parameters:
Name Type Description
cssString string

要注入页面的 CSS 字符串