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

[油猴脚本开发指南]GM存储函数

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

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

    积分
    6760

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

    发表于 2021-10-15 21:45:57 | 显示全部楼层 | 阅读模式

    前文

    写了这么久突然发现还没正经讲过gm存储函数,今天跟大家一起学习一下!

    GM_setValue

    设置一个值,参数为值得名称以及值

    GM_setValue(名称,值)

    GM_getValue

    获取一个值,参数有两个,一个值的名称,另一个为如果获取不到的默认值

    GM_deleteValue

    从存储之中删除名称,参数仅有一个,为值的名称。

    GM_addValueChangeListener

    对指定的名字进行监听,该函数返回一个id

    该函数可以跨函数通信

    格式为

    GM_addValueChangeListener(name, function(name, old_value, new_value, remote) {

    })

    name为值的名称

    函数的name也是

    old_value为旧值

    new_value为新值

    remote区分这个值的改变的所属,如果是由本标签页引起的,则为false,如果由其他标签页引起的,为true。

    为了方便理解我也写了一个小例子

    // ==UserScript==
    // @name         New Userscript
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://www.baidu.com/
    // @match        https://bbs.tampermonkey.net.cn/*
    // @icon         https://www.google.com/s2/favicons?domain=tampermonkey.net.cn
    // @grant        unsafeWindow
    // @grant        GM_setValue
    // @grant        GM_getValue
    // @grant        GM_deleteValue
    // @grant        GM_removeValueChangeListener
    // @grant        GM_addValueChangeListener
    // ==/UserScript==
    let num=0
    if(unsafeWindow.location.href.indexOf('bbs')!==-1){
        setInterval(
            ()=>{
                num++
                if(num%2===0){
                    GM_setValue('test',num)
    
                }else{
                    GM_deleteValue('test')
                }
            }
            ,5000)
    }else{
        GM_addValueChangeListener('test',function(name, old_value, new_value, remote) {
            console.log('监听到了更改',name, old_value, new_value, remote)
        })
    
    }

    大家可以分别访问油猴中文网以及百度首页体验一下。

    GM_removeValueChangeListener

    移除一个监听器

    GM_addValueChangeListener的函数会返回一个监听器的id

    如果我们传给GM_removeValueChangeListener,则移除该监听器

    类似于setinterval与clearinterval的关系

    GM_listValues

    列出存储的所有名称,无参数

    结语

    那么这里我们就大概学习了所有的存储函数

    这节课就算完成了,非常水!

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    慵懒
    2023-5-5 13:37
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    117

    主题

    405

    回帖

    711

    积分

    版主

    积分
    711

    油中2周年油中3周年

    发表于 2021-10-16 08:34:01 | 显示全部楼层
    哥哥水好多
    提及少年一词,应与平庸相斥!
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-1-28 11:21
  • 签到天数: 59 天

    [LV.5]常住居民I

    19

    主题

    102

    回帖

    124

    积分

    中级工程师

    积分
    124
    发表于 2022-11-14 15:23:06 | 显示全部楼层
    长见识了
    回复

    使用道具 举报

    发表回复

    本版积分规则

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