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

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

[复制链接]
  • TA的每日心情
    开心
    2023-8-1 16:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    6

    回帖

    11

    积分

    助理工程师

    积分
    11
    发表于 2023-8-2 11:45:54 | 显示全部楼层 | 阅读模式
    悬赏2油猫币未解决

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

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

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

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

    积分
    6763

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

    发表于 2023-8-2 13:35:40 | 显示全部楼层
    这个实在太模糊了...
    描述一下你的理想行为是什么
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

  • TA的每日心情
    慵懒
    11 小时前
  • 签到天数: 813 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1556

    积分

    荣誉开发者

    积分
    1556

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-8-2 15:50:10 | 显示全部楼层
    let foo=GM_getValue('foo',true)
    alert(foo)
    GM_setValue('foo',foo=false)
    alert(foo)
    location.reload()
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-1 16:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    6

    回帖

    11

    积分

    助理工程师

    积分
    11
    发表于 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被重置了
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

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

    积分
    6763

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

    发表于 2023-8-2 16:41:22 | 显示全部楼层
    HANJ2023 发表于 2023-8-2 16:20
    我在脚本第一行写了

    GM_setValue("initState", true);

    楼上答得代码是你想要的吗
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-1 16:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    6

    回帖

    11

    积分

    助理工程师

    积分
    11
    发表于 2023-8-2 16:47:57 | 显示全部楼层
    李恒道 发表于 2023-8-2 16:41
    楼上答得代码是你想要的吗

    不是,我哭了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-1 16:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    6

    回帖

    11

    积分

    助理工程师

    积分
    11
    发表于 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"))
    })();
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

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

    积分
    6763

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

    发表于 2023-8-2 17:12:26 | 显示全部楼层
    HANJ2023 发表于 2023-8-2 16:59
    算了,不管了,那这个无限循环刷新的问题该怎么处理?

    (function() {

    他是在给你demo
    你每次运行的时候根据得到的GM_getValue("bool")判断是否需要刷新就好了
    你要根据自己的软件行为做设计和数据传输的
    不能光看例子缝合
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-8-2 22:52:54 | 显示全部楼层
    GM_getValue的第二个参数是默认值,即脚本存储里没有这个key时,取默认值,意思就是说你不需要setValue手动设置一个初始值,直接取值即可,可以避免反复初始化的问题。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    回帖

    3

    积分

    助理工程师

    积分
    3
    发表于 2024-8-12 15:04:27 | 显示全部楼层
    按我理解你是不是可以使用sessionStorage来存储布尔值,这样在你本次浏览过程中布尔值设置了false不管页面怎么刷新去读取这个值都是false,直到你关闭页面重新打开,sessionStorage里面的数据会被自动清空,你读不到布尔值,默认为true
    回复

    使用道具 举报

    发表回复

    本版积分规则

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