李恒道 发表于 2021-10-15 21:45:57

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

# 前文

写了这么久突然发现还没正经讲过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。

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

```javascript
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @descriptiontry 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

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

# 结语

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

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

懒男孩 发表于 2021-10-16 08:34:01

哥哥水好多

BlenderB 发表于 2022-11-14 15:23:06

长见识了
页: [1]
查看完整版本: [油猴脚本开发指南]GM存储函数