```js
// ==UserScript==
// @name gmCookie test
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @descriptiontry to take over the world!
// @author You
// @match https://bbs.tampermonkey.net.cn/*
// @require https://scriptcat.org/lib/721/1.0.1/gmCookie.js
// @grant GM_cookie
// @connect www.baidu.com
// ==/UserScript==
console.log('gmcookie start');
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();
});
```
本帖最后由 tfsn20 于 2025-6-25 12:34 编辑
@cxxjackie 你好,最近脚本猫自动更新了,导致使用你的库会发生下面错误。
!(data/attachment/forum/202506/25/123008w3hv52vh5mmezqji.png)
我的代码:
```
const tools = {
gmCookie: async url => {
if (!window.GM_cookie) return console.error('缺少GM_cookie,请先通过@grant引入!');
return new Promise((resolve, reject) => {
GM_cookie('list', { url }, (cookie, error) => {
if (error || !Array.isArray(cookie)) {
reject(error);
} else {
const promises = [];
async function alldone() {
await Promise.all(promises);
promises.length = 0;
}
function proxySet(target, prop, value) {
if (prop !== 'name' && target !== value) {
promises.push(new Promise(resolve => {
GM_cookie('set', { ...target, url }, resolve);
}));
target = value;
}
}
const cookieObj = { $alldone: alldone };
for (const item of cookie) {
cookieObj = new Proxy(item, { set: proxySet });
}
resolve(new Proxy(cookieObj, {
set: function (target, prop, value) {
value.name = prop;
promises.push(new Promise(resolve => {
GM_cookie('set', { ...value, url }, resolve);
}));
target = new Proxy(value, { set: proxySet });
},
deleteProperty: function (target, prop) {
promises.push(new Promise(resolve => {
GM_cookie('delete', { ...target, url }, resolve);
}));
return delete target;
}
}));
}
});
});
},
}
```
调用函数
```
let cookies = await tools.gmCookie('http://cgyy.zzuli.edu.cn/');
for (let key in cookies) {
delete cookies;
}
``` tfsn20 发表于 2025-6-25 12:32
@cxxjackie 你好,最近脚本猫自动更新了,导致使用你的库会发生下面错误。
!
感谢反馈,这个问题是因为直接遍历会把$alldone当成cookie导致的,1.0.2已修复。
页:
1
[2]