检查当前脚本环境是TamperMonkey环境还是ScriptCat环境
前言
统一构建一套代码时, 如果脚本同时发布在 GreasyFork 和 ScriptCat 上, 并且具有一些用户配置的时候, 就会出现一些不统一的情况.
因为 ScriptCat 本身有一套配置系统, 但是 TamperMonkey 是需要自己手写配置系统的(比如写在菜单配置项或者提供一个进入配置弹窗的页面按钮).
当然你可以让你手写的配置系统也在 ScriptCat 上显示 (但是这不好看)
实现原理
在脚本信息中授权一个 ScriptCat CatApi, 比如 CAT_userConfig
, 调用此 api . 如果报错则说明当前环境是 TamperMonkey 环境, 如果不报错则说明当前环境是 ScriptCat 环境.
代码
TypeScript
// ==UserScript==
// /* Any UserScript Info */
// @grant CAT_userConfig
// ==/UserScript==
/**
* 检查当前的环境是否是脚本猫环境
* @Return {boolean}
* */
const checkScriptCatEnvironment = (): boolean => {
let isScriptCatEnvironment: boolean;
try {
// @ts-ignore 忽略未引入的 CAT_userConfig 函数
CAT_userConfig.toString();
isScriptCatEnvironment = true;
}
catch ( e ) {
isScriptCatEnvironment = false;
}
return isScriptCatEnvironment;
};
JavaScript
// ==UserScript==
// /* Any UserScript Info */
// @grant CAT_userConfig
// ==/UserScript==
/**
* 检查当前的环境是否是脚本猫环境
* @return {boolean}
* */
const checkScriptCatEnvironment = () => {
let isScriptCatEnvironment;
try {
CAT_userConfig.toString();
isScriptCatEnvironment = true;
} catch (e) {
isScriptCatEnvironment = false;
}
return isScriptCatEnvironment;
};
使用例