Skip to content

Commit 3d987c3

Browse files
CodFrmcyfung1031
andauthored
🐛 处理GM xhr的问题 (#1082)
* 处理GM xhr的问题 * 补上单元测试 * 恢复之前的单元测试 * 增加 readyState 判断 修复 responseText 问题 * 删除调试日志 * `${Date.now}` -> `${Date.now()}` * 修复fetch模式下,触发 readyState==1的问题 * fetch行为与TM保持一致 * 调整测试 * 修改错误的单元测试 * GMXhr 代码修正 * 中文 * 中文 * parseType 代码改善 * 调整代码 * 加入 allowResponse 特殊处理:readyState 达至 4 之前,排除 response, responseText, responseXML * `res.readyState === 4` -> `res.readyState === 4 || reqDone` * Update gm_xhr.ts * 调整代码 * typescript 调整 * 增加逻辑控制保护 * typescript 调整 * 处理共用 * 整理代码 * 修复错误 --------- Co-authored-by: cyfung1031 <44498510+cyfung1031@users.noreply.github.com>
1 parent b43880e commit 3d987c3

File tree

10 files changed

+265
-210
lines changed

10 files changed

+265
-210
lines changed

example/tests/gm_xhr_test.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,6 +1221,44 @@ const enableTool = true;
12211221
}
12221222
},
12231223
},
1224+
{
1225+
name: "Test bug #1078",
1226+
async run(fetch) {
1227+
const url = `${HB}/status/200`;
1228+
const { res } = await gmRequest({
1229+
method: "GET",
1230+
url,
1231+
responseType: "json",
1232+
fetch,
1233+
onprogress() {},
1234+
});
1235+
assertEq(res.status, 200, "status 200");
1236+
assertEq(`${res.responseText}`.includes('"code": 200'), true, "responseText ok");
1237+
assertEq(typeof res.response === "object" && res.response?.code === 200, true, "response ok");
1238+
assertEq(res.responseXML instanceof XMLDocument, true, "responseXML ok");
1239+
},
1240+
},
1241+
{
1242+
name: "Test bug #1080",
1243+
async run(fetch) {
1244+
const readyStateList = [];
1245+
const url = `${HB}/status/200`;
1246+
const { res } = await gmRequest({
1247+
method: "GET",
1248+
url,
1249+
responseType: "json",
1250+
fetch,
1251+
onreadystatechange: (resp) => {
1252+
readyStateList.push(resp.readyState);
1253+
},
1254+
});
1255+
assertEq(res.status, 200, "status 200");
1256+
assertEq(`${res.responseText}`.includes('"code": 200'), true, "responseText ok");
1257+
assertEq(typeof res.response === "object" && res.response?.code === 200, true, "response ok");
1258+
assertEq(res.responseXML instanceof XMLDocument, true, "responseXML ok");
1259+
assertDeepEq(readyStateList, fetch ? [2, 4] : [1, 2, 3, 4], "status 200");
1260+
},
1261+
},
12241262
];
12251263

12261264
const tests = [

0 commit comments

Comments
 (0)