王一之 发表于 2021-9-2 11:30:54

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

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

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

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

```js
// ==UserScript==
// @name         前端任务提交脚本
// @namespace  test
// @version    0.1.0
// @descriptiontry to take over the world!
// @author       You
// @match      https://bbs.tampermonkey.net.cn/*
// @grant      GM_setValue
// @storageNametest
// ==/UserScript==

let btn = document.createElement('button');
btn.innerText = "提交一个任务给后台脚本";

btn.onclick = () => {
   GM_setValue('task', '任务详情...');
   alert('任务提交成功');
}

document.querySelector('#diymsg1').append(btn);
```

```js
// ==UserScript==
// @name         后端任务处理脚本
// @namespace  test
// @version    0.1.0
// @descriptiontry to take over the world!
// @author       You
// @grant      GM_notification
// @grant      GM_addValueChangeListener
// @background
// @storageNametest
// ==/UserScript==

return new Promise((resolve, reject) => {
   GM_addValueChangeListener("task", (name, oldVal, newVal, remote) => {
       console.log(name, oldVal, newVal, remote);
       GM_notification({
           title: "任务处理",
           text: newVal,
     });
 })
});
```

陈公子的话 发表于 2021-9-2 13:39:53

没时长。。。?

王一之 发表于 2021-9-2 13:41:35

小陈 发表于 2021-9-2 13:39
没时长。。。?

什么意思 哥哥?

王一之 发表于 2021-9-2 14:08:53

小陈 发表于 2021-9-2 13:39
没时长。。。?

哦哦 刷课时间的时长?这种也完全可以用模拟封包的方法去做

ChHN 发表于 2021-9-3 07:58:23

刷课的帖子太长了,怕你看不见,在这里问:学习通换新版了,各项功能还都是正常支持的吗?

王一之 发表于 2021-9-3 09:25:35

ChHN 发表于 2021-9-3 07:58
刷课的帖子太长了,怕你看不见,在这里问:学习通换新版了,各项功能还都是正常支持的吗? ...
不支持,且可能不会更新了
其实不是看不见。。。是不想弄了。。。

ChHN 发表于 2021-9-7 15:16:34

王一之 发表于 2021-9-3 09:25
不支持,且可能不会更新了
其实不是看不见。。。是不想弄了。。。

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

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

我按哥哥的例子试了试,发现似乎即使内容不发生改变也还是会触发GM_addValueChangeListener
!(data/attachment/forum/202211/27/010304x16za8xaw8vqmom4.png)

Su. 发表于 2022-11-27 02:42:49

Su. 发表于 2022-11-27 01:03
我按哥哥的例子试了试,发现似乎即使内容不发生改变也还是会触发GM_addValueChangeListener
!(data/att ...

哦,我看了看这个gm_value.js
!(data/attachment/forum/202211/27/024159bz72jwjjk2donvcu.png)
是因为这里删掉重写加了个时间的原因吗?

王一之 发表于 2022-11-27 07:22:12

Su. 发表于 2022-11-27 01:03
我按哥哥的例子试了试,发现似乎即使内容不发生改变也还是会触发GM_addValueChangeListener
!(data/att ...

那就是哥哥检测内容的代码有问题
页: [1] 2
查看完整版本: [脚本猫开发]油猴脚本与后台脚本交互