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

[脚本猫开发]油猴脚本与后台脚本交互

[复制链接]
  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-2 11:30:54 | 显示全部楼层 | 阅读模式

    之前有朋友和我聊了一下刷课脚本,我想到了一个比较新的模式,前端提交任务,然后使用后台脚本来进行任务的执行,使用http封包的技术,这样可以不用再在前台挂着浏览器,并且资源大大节省。(平台也是这种技术)

    怎么实现是个问题,于是想到了油猴的这个API:GM_addValueChangeListener可以监听值的变化,脚本猫的话实现了同一个namespace(已更新为storageName )之间的共享Value,感觉可以利用这个特性去实现 油猴脚本与后台脚本的一个通信交互,例子如下:

    不过觉得应该可以有一套更好的API来实现前后端脚本的交互,后续继续考虑一下去。

    // ==UserScript==
    // @name         前端任务提交脚本
    // @namespace    test
    // @version      0.1.0
    // @description  try to take over the world!
    // @author       You
    // @match        https://bbs.tampermonkey.net.cn/*
    // @grant        GM_setValue
    // @storageName  test
    // ==/UserScript==
    
    let btn = document.createElement('button');
    btn.innerText = "提交一个任务给后台脚本";
    
    btn.onclick = () => {
        GM_setValue('task', '任务详情...');
        alert('任务提交成功');
    }
    
    document.querySelector('#diymsg1').append(btn);
    // ==UserScript==
    // @name         后端任务处理脚本
    // @namespace    test
    // @version      0.1.0
    // @description  try to take over the world!
    // @author       You
    // @grant        GM_notification
    // @grant        GM_addValueChangeListener
    // @background
    // @storageName  test
    // ==/UserScript==
    
    return new Promise((resolve, reject) => {
        GM_addValueChangeListener("task", (name, oldVal, newVal, remote) => {
            console.log(name, oldVal, newVal, remote);
            GM_notification({
                title: "任务处理",
                text: newVal,
            });
        })
    });
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
  • TA的每日心情
    擦汗
    9 小时前
  • 签到天数: 532 天

    [LV.9]以坛为家II

    148

    主题

    420

    回帖

    1215

    积分

    版主

    积分
    1215

    油中2周年生态建设者

    发表于 2021-9-2 13:39:53 | 显示全部楼层
    没时长。。。?
    I don't hate programming but the fucking world.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-2 13:41:35 | 显示全部楼层
    小陈 发表于 2021-9-2 13:39
    没时长。。。?

    什么意思 哥哥?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-2 14:08:53 | 显示全部楼层
    小陈 发表于 2021-9-2 13:39
    没时长。。。?

    哦哦 刷课时间的时长?这种也完全可以用模拟封包的方法去做
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2022-6-12 10:58
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    6

    主题

    38

    回帖

    51

    积分

    初级工程师

    积分
    51

    新人报道

    发表于 2021-9-3 07:58:23 | 显示全部楼层
    刷课的帖子太长了,怕你看不见,在这里问:学习通换新版了,各项功能还都是正常支持的吗?
    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-3 09:25:35 | 显示全部楼层
    ChHN 发表于 2021-9-3 07:58
    刷课的帖子太长了,怕你看不见,在这里问:学习通换新版了,各项功能还都是正常支持的吗? ...

    不支持,且可能不会更新了
    其实不是看不见。。。是不想弄了。。。
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2022-6-12 10:58
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    6

    主题

    38

    回帖

    51

    积分

    初级工程师

    积分
    51

    新人报道

    发表于 2021-9-7 15:16:34 | 显示全部楼层
    王一之 发表于 2021-9-3 09:25
    不支持,且可能不会更新了
    其实不是看不见。。。是不想弄了。。。

    嗯 , 理解 , 毕竟是兴趣使然 , 看以后谁有能力来接力一下吧
    回复

    使用道具 举报

  • TA的每日心情

    12 小时前
  • 签到天数: 757 天

    [LV.10]以坛为家III

    30

    主题

    336

    回帖

    1168

    积分

    荣誉开发者

    积分
    1168

    油中2周年生态建设者油中3周年荣誉开发者

    发表于 2022-11-27 01:03:15 | 显示全部楼层

    我按哥哥的例子试了试,发现似乎即使内容不发生改变也还是会触发GM_addValueChangeListener
    image.png

    回复

    使用道具 举报

  • TA的每日心情

    12 小时前
  • 签到天数: 757 天

    [LV.10]以坛为家III

    30

    主题

    336

    回帖

    1168

    积分

    荣誉开发者

    积分
    1168

    油中2周年生态建设者油中3周年荣誉开发者

    发表于 2022-11-27 02:42:49 | 显示全部楼层

    Su. 发表于 2022-11-27 01:03

    [md]我按哥哥的例子试了试,发现似乎即使内容不发生改变也还是会触发GM_addValueChangeListener
    !(data/att ...

    哦,我看了看这个gm_value.js
    image.png
    是因为这里删掉重写加了个时间的原因吗?

    回复

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-11-27 07:22:12 | 显示全部楼层
    Su. 发表于 2022-11-27 01:03
    [md]我按哥哥的例子试了试,发现似乎即使内容不发生改变也还是会触发GM_addValueChangeListener
    !(data/att ...

    那就是哥哥检测内容的代码有问题
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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