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

油猴脚本教程——元数据块

[复制链接]
  • TA的每日心情
    无聊
    昨天 23:11
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    6

    主题

    10

    回帖

    42

    积分

    荣誉开发者

    积分
    42

    新人报道油中2周年油中3周年挑战者 lv2荣誉开发者

    发表于 昨天 23:06 | 显示全部楼层 | 阅读模式

    开发环境使用脚本猫扩展
    点击跳转脚本猫官网
    我的CSDN个人主页

    什么是油猴脚本?
    依赖浏览器扩展运行的一段javascript代码,主要用于辅助工作。

    什么是元数据块?
    用于向浏览器扩展,向脚本网站描述该脚本的信息。

    一个示例:

    // ==UserScript==
    // @name         New Userscript Y7VA-1
    // @namespace    https://docs.scriptcat.org/
    // @version      0.1.0
    // @description  try to take over the world!
    // @author       You
    // @match        https://*/*
    // @grant        none
    // @noframes
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        // Your code here...
    })();
    

    油猴脚本开发的元数据块大致分为如下几个类型,基础信息、网站匹配、权限声明、运行时机、扩展字段、脚本猫专属。

    一,基础信息

    1,脚本名称

    // @name 去广告脚本

    2,命名空间(唯一标识符)

    // @namespace https://github.com/xxx

    建议使用github主页地址,这样不会重复,也可以使用别的平台的主页作为唯一标识符,如果本地两个脚本名称与命名空间都一样,那么更新脚本是有可能会更新错误,建议使用账号主页地址,从而保证命名空间唯一性。

    3,版本号

    // @version 0.0.1

    用于区别同一脚本的不同版本,建议使用三个数字,第一个数字代表大的版本变动,就像python2与python3一样,第二个数字表示功能上的迭代,第三个数字表示bug修复,或者小改动。

    4,功能描述

    // @description 这是一个......

    描述脚本功能,建议写,方便使用者知道脚本大致功能。

    5,作者

    // @author 白猫&

    二,网站匹配

    @match:精准匹配网址(推荐)
    @include:兼容旧版,通配匹配
    @exclude:排除不生效的网址

    // 只在百度首页生效
    // @match        https://www.baidu.com/
    // 在所有B站页面生效
    // @match        https://*.bilibili.com/*
    // 排除百度贴吧
    // @exclude      https://tieba.baidu.com/*

    通配符规则:
    *匹配任意字符(除域名斜杠外)
    https://*/* 匹配所有 HTTPS 网站

    三,权限声明

    用于开启油猴提供的专属 API(如跨域请求、存储、弹窗),不写会默认无权限。也就是允许调用扩展写好的功能。

    // 允许跨域请求
    // @grant        GM_xmlhttpRequest
    // 本地存储(读/写)
    // @grant        GM_setValue
    // @grant        GM_getValue
    // 弹窗通知
    // @grant        GM_notification
    // 无权限(纯原生JS脚本)
    // @grant        none

    四,运行时机

    用于控制脚本加载的时机。

    // 页面开始加载时运行(最早)
    // @run-at       document-start
    // DOM加载完成时运行(默认,推荐)
    // @run-at       document-end
    // 页面完全加载(图片/样式都加载完)
    // @run-at       document-idle

    五,扩展字段

    // 图标(脚本列表显示)
    // @icon         https://www.baidu.com/favicon.ico
    // 脚本主页
    // @homepageURL  https://github.com/xxx
    // 支持的油猴版本
    // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
    // 引入外部CSS
    // @resource     customCSS https://cdn.xxx.com/style.css

    1,图标

    // @icon         https://www.baidu.com/favicon.ico

    支持常用类型jpg、ico、png图片类型。还支持base64编码和url链接的图片,建议base64,不会因为网络问题,也不会因为网址变化而导致图片加载不出来。

    2,引用其它脚本或引用库。

    // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js

    当代码较为庞大时,可以拆分为多个,使用该方法引入。当需求第三方库时,也可使用该方法。

    六,脚本猫专属元数据块

    脚本猫审核规则

    @antifeature规则 如果含有以下不受用户欢迎的功能,
    需要在脚本的头部添加@antifeature属性,如果多个,每一项一行

    referral-link:该脚本会修改或重定向到作者的返佣链接
    ads:该脚本会在访问的页面上插入广告
    payment:该脚本需要付费才能够正常使用
    miner:该脚本存在利用用户资源但不为用户产生收益或收益极其微弱的行为
    membership:该脚本需要注册会员/关注公众号才能正常使用
    tracking:该脚本会追踪你的用户信息

    试一试

    // ==UserScript==
    // @name         api演示
    // @namespace    https://blog.csdn.net/m0_70933482
    // @version      1.0.0
    // @description  演示 GM_setValue / GM_getValue / GM_notification
    // @author       白猫&
    // @match        https://blog.csdn.net/m0_70933482*
    // @grant        GM_setValue
    // @grant        GM_getValue
    // @grant        GM_notification
    // @run-at       document-end
    // ==/UserScript==
    
    (function() {
        'use strict';
        // 获取访问数字
        let count = GM_getValue("visit_count", 0);
        count++;
    
        // 保存访问数字
        GM_setValue("visit_count", count);
    
        // 弹出提示
        GM_notification({
            title: "油猴脚本已运行",
            text: "你本次访问是第 " + count + " 次打开网页",
            timeout: 3000  // 3秒后自动关闭
        });
    
        console.log("已保存访问次数:", count);
    
    })();

    提示:
    image.png

    控制台:
    image.png

    发表回复

    本版积分规则