HANJ2023 发表于 2023-8-2 11:45:54

页面刷新导致脚本重新运行

现在网页上有一个按钮,我必须点击,但是点击后网页后会自动刷新,然后再显示数据,这样导致我之前用GM_setValue设置的一些值由于脚本重新运行初始化了,比如说我用GM_setValue初始时设置了一个布尔值,为true,脚本运行到一半,设为false了,后面因为网页自动刷新,脚本重新运行,值又被脚本初始化为true,哥哥们,求解答,该怎么改?

李恒道 发表于 2023-8-2 13:35:40

这个实在太模糊了...
描述一下你的理想行为是什么

steven026 发表于 2023-8-2 15:50:10

let foo=GM_getValue('foo',true)
alert(foo)
GM_setValue('foo',foo=false)
alert(foo)
location.reload()

HANJ2023 发表于 2023-8-2 16:20:46

李恒道 发表于 2023-8-2 13:35
这个实在太模糊了...
描述一下你的理想行为是什么

我在脚本第一行写了

GM_setValue("initState", true);

然后脚本继续运行,在运行过程中,initState会被设置为false

GM_setValue("initState", false);

再之后会点击网页上的查询按钮,但是点了之后呢,网页会刷新(网址在刷新前后不变化),然后网页会显示查询后的数据,在这个刷新过程中,油猴脚本可能随着网页刷新重新运行了,又顺序执行了第一行的
GM_setValue("initState", true);
导致initState被重置了

李恒道 发表于 2023-8-2 16:41:22

HANJ2023 发表于 2023-8-2 16:20
我在脚本第一行写了

GM_setValue("initState", true);


楼上答得代码是你想要的吗

HANJ2023 发表于 2023-8-2 16:47:57

李恒道 发表于 2023-8-2 16:41
楼上答得代码是你想要的吗

不是,我哭了{:4_115:}

HANJ2023 发表于 2023-8-2 16:59:57

李恒道 发表于 2023-8-2 16:41
楼上答得代码是你想要的吗

算了,不管了,那这个无限循环刷新的问题该怎么处理?

(function() {
    GM_setValue("bool",true)
    console.log(GM_getValue("bool"))
    location.reload()      //刷新后脚本就从头开始执行,无限循环刷新,如何解决?
    GM_setValue("bool",false)
    console.log(GM_getValue("bool"))
})();

李恒道 发表于 2023-8-2 17:12:26

HANJ2023 发表于 2023-8-2 16:59
算了,不管了,那这个无限循环刷新的问题该怎么处理?

(function() {


他是在给你demo
你每次运行的时候根据得到的GM_getValue("bool")判断是否需要刷新就好了
你要根据自己的软件行为做设计和数据传输的
不能光看例子缝合

cxxjackie 发表于 2023-8-2 22:52:54

GM_getValue的第二个参数是默认值,即脚本存储里没有这个key时,取默认值,意思就是说你不需要setValue手动设置一个初始值,直接取值即可,可以避免反复初始化的问题。

NorthEgg 发表于 2024-8-12 15:04:27

按我理解你是不是可以使用sessionStorage来存储布尔值,这样在你本次浏览过程中布尔值设置了false不管页面怎么刷新去读取这个值都是false,直到你关闭页面重新打开,sessionStorage里面的数据会被自动清空,你读不到布尔值,默认为true
页: [1]
查看完整版本: 页面刷新导致脚本重新运行