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

封装了一下GM_cookie

[复制链接]
  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2022-11-22 23:38:44 | 显示全部楼层 | 阅读模式

    如何使用? 库问题反馈 给库评分 查看代码

    本帖最后由 cxxjackie 于 2022-11-23 22:48 编辑

    请在脚本猫上使用,其他脚本管理器可能不支持此API,或表现不一致。使用前请确保脚本已引入GM_cookie和@connect相关域名。

    因为有人说看不懂GM_cookie的文档,而且这个API用起来也挺麻烦的,故简单封装了一下。使用示例:

    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方法。

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

    发表于 2022-11-23 09:30:46 | 显示全部楼层
    确实更简单了

    tampermonkey好像有的版本支持这个,有的不支持,文档明面上是说不支持的
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2022-11-23 20:54:01 | 显示全部楼层
    王一之 发表于 2022-11-23 09:30
    确实更简单了

    tampermonkey好像有的版本支持这个,有的不支持,文档明面上是说不支持的 ...

    要不干脆放弃兼容油猴,或者提出一个新的CAT_cookie,简化一下语法。油猴对这个API基本是一个搁置的态度,脚本猫的后台脚本则是硬性需求,我觉得没必要跟随油猴的做法。
    另外脚本猫的GM_cookie有点问题,删除的时候必须传url,不能只传domain,导致我这个库只能用url做参数,其实我更倾向于domain的。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

    发表于 2022-11-23 22:04:15 | 显示全部楼层
    cxxjackie 发表于 2022-11-23 20:54
    要不干脆放弃兼容油猴,或者提出一个新的CAT_cookie,简化一下语法。油猴对这个API基本是一个搁置的态度 ...

    我也想出一系列不兼容的API,然后同步API也整上

    删除这个问题我后面看看
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2022-11-23 22:23:33 | 显示全部楼层
    王一之 发表于 2022-11-23 22:04
    我也想出一系列不兼容的API,然后同步API也整上

    删除这个问题我后面看看 ...

    是的,GM_cookie是异步也挺蛋疼的,我这个库改成同步操作在一些情况下也有问题,比如需要修改完cookie后再发请求,感觉得加一个类似Promise.all的方法进来。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-3 01:56
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    10

    回帖

    22

    积分

    助理工程师

    积分
    22

    新人报道

    发表于 2022-11-26 13:54:01 | 显示全部楼层
    用上了,点个赞
    回复

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    91

    积分

    初级工程师

    积分
    91

    新人报道

    发表于 2023-5-25 21:59:18 | 显示全部楼层
    1.     //
    2.     getcookie:function(){
    3.         gmCookie('https://www.taobao.com/').then(async cookie => {
    4.             console.log('打印cookie',cookie)
    5.             console.log('mycookie我的',await cookie.$alldone())
    6.             return await cookie.$alldone();
    7.             
    8.         })
    9.     },
    10. };
    复制代码

    打印的 await cookie.$alldone() 的值为 undefined  有办法解决吗
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2023-5-25 22:22:52 | 显示全部楼层
    Major 发表于 2023-5-25 21:59
    打印的 await cookie.$alldone() 的值为 undefined  有办法解决吗

    这个$alldone本来就没有返回值啊,是用来等待其他增删操作完成的,你要看cookie的话应该打印cookie对象,由于是个Proxy,展开后在 [[Target]] 里可以看到cookie内容。
    回复

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    91

    积分

    初级工程师

    积分
    91

    新人报道

    发表于 2023-5-25 22:48:16 | 显示全部楼层
    cxxjackie 发表于 2023-5-25 22:22
    这个$alldone本来就没有返回值啊,是用来等待其他增删操作完成的,你要看cookie的话应该打印cookie对象, ...

    可以封装一个同步的获取cookie的库吗
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2023-5-25 23:46:47 | 显示全部楼层
    Major 发表于 2023-5-25 22:48
    可以封装一个同步的获取cookie的库吗

    没办法,GM_cookie本身是异步的,我已经尽量改成同步写法了,用async/await写起来会好一点:
    1. (async function() {
    2.     const cookie = await  gmCookie('https://www.example.com/');
    3.     // ...
    4.     // 执行完所有操作后,调用$alldone
    5.     await cookie.$alldone();
    6.     // 然后写发送请求之类的代码
    7. })();
    复制代码
    回复

    使用道具 举报

    发表回复

    本版积分规则

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