responseType: stream Test
fetchXhr (responseType: stream)
// ==UserScript==
// @name New Userscript M36
// @namespace http://tampermonkey.net/
// @version 2025-12-15
// @description try to take over the world!
// @author You
// @match https://example.com/?m36tm
// @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant GM_xmlhttpRequest
// @connect raw.githubusercontent.com
// ==/UserScript==
(function() {
'use strict';
const typing = (x) => {
let t = x === null ? "null" : typeof x;
if (!x) t = `<${t}>`;
if (t === "object") {
try {
return x[Symbol.toStringTag] || "object";
} catch (e) { }
}
return t;
}
const log = (type, response) => {
console.log("-------------------------------");
console.log({
type: type,
code: `r${response.readyState}s${response.status}`,
responseText: `${"responseText" in response ? 1 : 0}:${typing(response.responseText)}`,
response: `${"response" in response ? 1 : 0}:${typing(response.response)}`,
responseXML: `${"responseXML" in response ? 1 : 0}:${typing(response.responseXML)}`,
});
console.log(response.responseText);
console.log(response.response);
console.log("-------------------------------");
}
GM_xmlhttpRequest({
method: "GET",
responseType: "stream",
url: "https://raw.githubusercontent.com/mdn/content/main/files/en-us/_redirects.txt",
onreadystatechange: function (response) {
log("onreadystatechange", response);
},
onprogress: function (response) {
log("onprogress", response);
},
onload: function (response) {
log("onload", response);
},
onloadstart: function (response) {
log("onloadstart", response);
},
});
// Your code here...
})();
TM
SC
目前
responseType: streamTestfetchXhr (
responseType: stream)TM
SC
目前