封装了一下GM_cookie
本帖最后由 cxxjackie 于 2022-11-23 22:48 编辑#### 请在脚本猫上使用,其他脚本管理器可能不支持此API,或表现不一致。使用前请确保脚本已引入GM\_cookie和@connect相关域名。
因为有人说看不懂GM\_cookie的文档,而且这个API用起来也挺麻烦的,故简单封装了一下。使用示例:
```js
gmCookie('https://www.baidu.com/').then(async cookie => {
// 读取cookie
console.log(cookie);
// 修改cookie
cookie.BAIDUID.value = 'hello';
// 新增cookie
cookie.test = {
path: '/',
value: 'world'
};
// 删除cookie
delete cookie.BAIDUID;
// 由于GM_cookie是异步,调用$alldone方法可以等待所有操作完成
await cookie.$alldone();
});
```
## 更新日志
1.0.0 初始版本
1.0.1 新增$alldone方法。 确实更简单了
tampermonkey好像有的版本支持这个,有的不支持,文档明面上是说不支持的 王一之 发表于 2022-11-23 09:30
确实更简单了
tampermonkey好像有的版本支持这个,有的不支持,文档明面上是说不支持的 ...
要不干脆放弃兼容油猴,或者提出一个新的CAT_cookie,简化一下语法。油猴对这个API基本是一个搁置的态度,脚本猫的后台脚本则是硬性需求,我觉得没必要跟随油猴的做法。
另外脚本猫的GM_cookie有点问题,删除的时候必须传url,不能只传domain,导致我这个库只能用url做参数,其实我更倾向于domain的。 cxxjackie 发表于 2022-11-23 20:54
要不干脆放弃兼容油猴,或者提出一个新的CAT_cookie,简化一下语法。油猴对这个API基本是一个搁置的态度 ...
我也想出一系列不兼容的API,然后同步API也整上
删除这个问题我后面看看 王一之 发表于 2022-11-23 22:04
我也想出一系列不兼容的API,然后同步API也整上
删除这个问题我后面看看 ...
是的,GM_cookie是异步也挺蛋疼的,我这个库改成同步操作在一些情况下也有问题,比如需要修改完cookie后再发请求,感觉得加一个类似Promise.all的方法进来。 用上了,点个赞 //
getcookie:function(){
gmCookie('https://www.taobao.com/').then(async cookie => {
console.log('打印cookie',cookie)
console.log('mycookie我的',await cookie.$alldone())
return await cookie.$alldone();
})
},
};
打印的 await cookie.$alldone() 的值为 undefined有办法解决吗
Major 发表于 2023-5-25 21:59
打印的 await cookie.$alldone() 的值为 undefined有办法解决吗
这个$alldone本来就没有返回值啊,是用来等待其他增删操作完成的,你要看cookie的话应该打印cookie对象,由于是个Proxy,展开后在 [] 里可以看到cookie内容。 cxxjackie 发表于 2023-5-25 22:22
这个$alldone本来就没有返回值啊,是用来等待其他增删操作完成的,你要看cookie的话应该打印cookie对象, ...
可以封装一个同步的获取cookie的库吗 Major 发表于 2023-5-25 22:48
可以封装一个同步的获取cookie的库吗
没办法,GM_cookie本身是异步的,我已经尽量改成同步写法了,用async/await写起来会好一点:
(async function() {
const cookie = awaitgmCookie('https://www.example.com/');
// ...
// 执行完所有操作后,调用$alldone
await cookie.$alldone();
// 然后写发送请求之类的代码
})();
页:
[1]
2