Bladeren bron

Add window.TextDecoder fallback (#93)

Lutz Roeder 8 jaren geleden
bovenliggende
commit
87ec771f26
1 gewijzigde bestanden met toevoegingen van 42 en 1 verwijderingen
  1. 42 1
      src/view-browser.js

+ 42 - 1
src/view-browser.js

@@ -190,4 +190,45 @@ class BrowserHost {
     }
 }
 
-window.host = new BrowserHost();
+if (!window.TextDecoder) {
+    window.TextDecoder = class {
+        constructor(encoding) {
+            this._encoding = encoding;
+        }
+        decode(buffer) {
+            var result = '';
+            var length = buffer.length;
+            var i = 0
+            switch (this._encoding) {
+                case 'utf-8':
+                    while (i < length) {
+                        var c = buffer[i++];
+                        switch(c >> 4)
+                        { 
+                            case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
+                                result += String.fromCharCode(c);
+                                break;
+                            case 12: case 13:
+                                c2 = buffer[i++];
+                                result += String.fromCharCode(((c & 0x1F) << 6) | (c2 & 0x3F));
+                                break;
+                            case 14:
+                                var c2 = buffer[i++];
+                                var c3 = buffer[i++];
+                                result += String.fromCharCode(((c & 0x0F) << 12) | ((c2 & 0x3F) << 6) | ((c3 & 0x3F) << 0));
+                                break;
+                        }
+                    }
+                    break;
+                case 'ascii':
+                    while (i < length) {
+                        result += String.fromCharCode(buffer[i++]);
+                    }
+                    break;
+            }
+            return result;
+        }
+    }
+}
+
+window.host = new BrowserHost();