Browse Source

fix: responseText in subsequent events

tophf 2 years ago
parent
commit
d5ffb91b3b
1 changed files with 10 additions and 8 deletions
  1. 10 8
      src/injected/web/requests.js

+ 10 - 8
src/injected/web/requests.js

@@ -71,25 +71,27 @@ addHandlers({
       [kResponse]: response,
       [kResponseHeaders]: headers,
     } = data;
+    let raw = req[kRaw];
     if (response != null) {
       if (req[kXhrType]) {
         req[kRaw] = response;
-        setOwnProp(data, kResponseText, null);
       } else {
-        const raw = req[kRaw] || (req[kRaw] = []);
+        if (!raw) raw = req[kRaw] = [];
         if (isString(response)) {
           safePush(raw, response);
         } else {
           for (const chunk of response) safePush(raw, chunk);
         }
-        if (raw.length === 1) {
-          setOwnProp(data, kResponseText, raw[0]);
-        } else {
-          setOwnProp(data, kResponseText, safeBind(parseRaw, data, req, msg, kResponseText),
-            true, 'get');
-        }
       }
     }
+    if (req[kXhrType]) {
+      setOwnProp(data, kResponseText, null);
+    } else if (!raw || raw.length <= 1) {
+      setOwnProp(data, kResponseText, raw && raw[0] || '');
+    } else if (raw.length) {
+      setOwnProp(data, kResponseText, safeBind(parseRaw, data, req, msg, kResponseText),
+        true, 'get');
+    }
     if (headers != null) {
       req[kResponseHeaders] = headers;
     }