找回密码
 立即注册
快捷导航

[Html/Css/JS] 油猴脚本 - 右键菜单 与 GM_get/setValue 键值对函数

[复制链接]
庶民 2023-6-13 14:25:54 | 显示全部楼层

GM_get/setValue 键值对存储

https://www.tampermonkey.net/documentation.php#api:GM_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"));

右键菜单

// ==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");
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

温馨提示

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

关于 注册码 问题

      由于近期经常大量注册机器人注册发送大量广告,本站开启免费入群领取注册码注册网站账号,注册码在群公告上贴着...

Archiver|手机版|小黑屋|DLSite

GMT+8, 2024-11-23 06:19

Powered by Discuz! X3.5 and PHP8

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