Răsfoiți Sursa

use TextDecoder instead of FileReader

Gildas 7 ani în urmă
părinte
comite
e4d112d1f0
1 a modificat fișierele cu 8 adăugiri și 8 ștergeri
  1. 8 8
      lib/single-file/single-file-browser.js

+ 8 - 8
lib/single-file/single-file-browser.js

@@ -18,7 +18,7 @@
  *   along with SingleFile.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-/* global SingleFileCore, btoa, DOMParser, getComputedStyle, FileReader, window, fetch */
+/* global SingleFileCore, btoa, DOMParser, getComputedStyle, TextDecoder, window, fetch */
 
 this.SingleFile = (() => {
 
@@ -55,13 +55,13 @@ this.SingleFile = (() => {
 			} else {
 				const matchCharset = contentType.match(/\s*;\s*charset\s*=\s*(.*)(;|$)/i);
 				if (matchCharset && matchCharset[1]) {
-					const fileReader = new FileReader();
-					const blob = await resourceContent.blob();
-					fileReader.readAsText(blob, matchCharset[1]);
-					return new Promise((resolve, reject) => {
-						fileReader.onload = event => resolve(event.target.result);
-						fileReader.onerror = reject;
-					});
+					const charSet = matchCharset[1].toLowerCase();
+					if (charSet != "utf-8") {
+						const arrayBuffer = await resourceContent.arrayBuffer();
+						return (new TextDecoder(charSet)).decode(arrayBuffer);
+					} else {
+						return resourceContent.text();
+					}
 				} else {
 					return resourceContent.text();
 				}