上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

[油猴脚本开发指南] 检查当前脚本环境是TamperMonkey环境还是ScriptCat环境

[复制链接]
  • TA的每日心情
    难过
    2024-4-24 18:57
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    24

    主题

    31

    回帖

    281

    积分

    荣誉开发者

    积分
    281

    荣誉开发者油中2周年生态建设者喜迎中秋

    发表于 2024-3-13 23:45:00 | 显示全部楼层 | 阅读模式

    检查当前脚本环境是TamperMonkey环境还是ScriptCat环境

    前言

    统一构建一套代码时, 如果脚本同时发布在 GreasyForkScriptCat 上, 并且具有一些用户配置的时候, 就会出现一些不统一的情况.

    因为 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;
    };

    使用例

    点评

    一楼才是正解,哥哥有些误导了  发表于 2024-3-14 09:34
  • TA的每日心情
    慵懒
    7 小时前
  • 签到天数: 813 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1556

    积分

    荣誉开发者

    积分
    1556

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2024-3-14 09:21:02 | 显示全部楼层

    可以不用这么麻烦,直接调用GM_info就能看到是什么脚本管理器
    image.png

    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-3-14 09:33:29 | 显示全部楼层
    steven026 发表于 2024-3-14 09:21
    [md]可以不用这么麻烦,直接调用GM_info就能看到是什么脚本管理器
    ![image.png](data/attachment/forum/202 ...

    哥哥确实麻烦了,这才是正解
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-24 18:57
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    24

    主题

    31

    回帖

    281

    积分

    荣誉开发者

    积分
    281

    荣誉开发者油中2周年生态建设者喜迎中秋

    发表于 2024-3-14 20:28:51 | 显示全部楼层

    王一之 发表于 2024-3-14 09:33

    哥哥确实麻烦了,这才是正解

    没用过 GM_info, 是复杂了

    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表