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

[油猴脚本开发指南]右键菜单与GM_get/setValue函数

[复制链接]
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2021-2-8 14:59:01 | 显示全部楼层 | 阅读模式

    本节主要内容

    介绍GM_get/setValue两个函数,油猴脚本的右键菜单能力.最后来一个菜单点击计次的脚本演示.

    GM_get/setValue

    GM_get/setValue

    这两个函数可以使用KV键值对的方式存储数据,将数据保存在浏览器的储存中(tampermonkey插件是websql中),具体容量由扩展实现使用的存储介质所决定,不过一般来说肯定是够用的,不用太关注.

    另外这个函数在Greasemonkey中是异步的,Tampermonkey是同步的,我们这里只针对Tampermonkey来讲解.注意:在两个不同的脚本中是无法共享数据的.

    这个函数可以用来保存一些配置数据,像某些脚本的配置是写在脚本代码中的,更新脚本后配置又被还原,很不方便,这时就可以改造成get/setValue函数来储存下来.

    使用方法

    方法非常简单,我们一笔带过.注意两个函数都要使用 grant去申请

    // ==UserScript==
    // @name         New Userscript2
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn/
    // @grant        GM_setValue
    // @grant        GM_getValue
    // ==/UserScript==
    
    GM_setValue("qqq",123);
    console.log(GM_getValue("qqq"));

    右键菜单

    之前在说run-at的时候,有一个属性,不知道大家有没有注意,当时也没有详细讲解.除了 document-start/body/end/idle这些控制脚本运行时间的外,还有一个 context-menu的属性,用于右键点击菜单的时候执行脚本.如果你使用了 context-menu属性,那么当你在所匹配的页面上右键时,菜单中就会以你脚本名显示出一菜单项,点击之后就是执行你的脚本代码.

    (文档的最后还提了一下 #include#exclude,这两个属性和 #match功能差不多,🤡实际上我也没用过这两,忽略好了)

    image-20210208134730012.png

    // ==UserScript==
    // @name         右键菜单和valude demo
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn/*
    // @run-at       context-menu
    // ==/UserScript==
    
    alert("菜单被点击了");

    自定义的菜单

    除了使用 @run-at context-menu生成菜单外,油猴还提供了两个函数GM_registerMenuCommandGM_unregisterMenuCommand,分别用于注册菜单和删除菜单.更加灵活,但是不能显示在页面上,需要到油猴图标脚本那里去进行点击.

    // ==UserScript==
    // @name         右键菜单和valude demo
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn/*
    // @grant    GM_registerMenuCommand
    // @grant    GM_unregisterMenuCommand
    // ==/UserScript==
    
    let id=GM_registerMenuCommand ("自定义的菜单", function(){
       alert('菜单点击');
       GM_unregisterMenuCommand(id);//删除菜单
    }, "h");
    // 第三个参数 accessKey 为快捷键,输入h即可触发。本脚本在点击一次之后会将菜单删除。

    菜单点击计数器

    利用油猴的存储功能来保存菜单被点击的次数,然后刷新次数(纯属使用而使用...想不到什么实战的例子...)

    // ==UserScript==
    // @name         右键菜单和valude demo
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn/*
    // @grant    GM_setValue
    // @grant    GM_getValue
    // @grant    GM_registerMenuCommand
    // @grant    GM_unregisterMenuCommand
    // ==/UserScript==
    
    let id=GM_registerMenuCommand ("菜单第"+GM_getValue("click_num",0)+"点击",click, "h");
    
    function click(){
       GM_unregisterMenuCommand(id);
       GM_setValue("click_num",GM_getValue("click_num",0)+1)
       id=GM_registerMenuCommand ("菜单第"+GM_getValue("click_num",0)+"点击",click, "h");
    }
    已有1人评分好评 油猫币 理由
    zip11 + 1 + 7 很给力!

    查看全部评分 总评分:好评 +1  油猫币 +7 

    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。

    该用户从未签到

    0

    主题

    3

    回帖

    20

    积分

    助理工程师

    积分
    20
    发表于 2021-7-11 21:06:38 | 显示全部楼层
    有没有其他详细学习油猴的资料
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

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

    发表于 2021-7-11 23:19:56 | 显示全部楼层
    601tyl 发表于 2021-7-11 21:06
    有没有其他详细学习油猴的资料

    论坛的油猴开发系列基本很满足了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-6-22 14:10
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    19

    主题

    133

    回帖

    145

    积分

    中级工程师

    积分
    145

    油中2周年

    发表于 2021-7-12 21:42:04 | 显示全部楼层
    想问如何管理GM数据库呢,比如我之前测试set了许多value,如何删除这些value呢。
    网课需求,wx:466756115(全日制大学勿扰,大学生应当好好学习)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2021-7-12 21:44:19 | 显示全部楼层
    wjy0 发表于 2021-7-12 21:42
    想问如何管理GM数据库呢,比如我之前测试set了许多value,如何删除这些value呢。 ...

    GM_listValues  GM_deleteValue  GM_addValueChangeListener  GM_removeValueChangeListener

    之前忘记写这些了.....
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-6-22 14:10
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    19

    主题

    133

    回帖

    145

    积分

    中级工程师

    积分
    145

    油中2周年

    发表于 2021-7-12 21:55:28 | 显示全部楼层
    王一之 发表于 2021-7-12 21:44
    GM_listValues  GM_deleteValue  GM_addValueChangeListener  GM_removeValueChangeListener

    之前忘记写 ...

    谢谢,ggnb!
    网课需求,wx:466756115(全日制大学勿扰,大学生应当好好学习)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    11

    回帖

    5

    积分

    助理工程师

    积分
    5
    发表于 2021-10-1 21:08:28 | 显示全部楼层
    论坛的油猴开发系列基本很满足了
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    11

    回帖

    5

    积分

    助理工程师

    积分
    5
    发表于 2021-10-1 21:11:43 | 显示全部楼层

    有没有其他详细学习油猴的资料
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-4-3 09:49
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    9

    回帖

    12

    积分

    助理工程师

    积分
    12

    新人报道油中2周年

    发表于 2021-10-15 16:58:25 来自手机  | 显示全部楼层
    有一张图片崩了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2021-10-15 16:59:39 | 显示全部楼层

    好像是演示图,问题不大
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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