Browse Source

use worker in ie11

Tony Brix 6 years ago
parent
commit
a00ae47f3a
2 changed files with 16 additions and 12 deletions
  1. 7 11
      docs/demo/demo.js
  2. 9 1
      docs/demo/worker.js

+ 7 - 11
docs/demo/demo.js

@@ -1,13 +1,10 @@
 /* globals marked, unfetch, ES6Promise */
 /* globals marked, unfetch, ES6Promise */
 
 
-var useWorker = !!window.Worker;
 if (!window.Promise) {
 if (!window.Promise) {
   window.Promise = ES6Promise;
   window.Promise = ES6Promise;
-  useWorker = false;
 }
 }
 if (!window.fetch) {
 if (!window.fetch) {
   window.fetch = unfetch;
   window.fetch = unfetch;
-  useWorker = false;
 }
 }
 
 
 onunhandledrejection = function (e) {
 onunhandledrejection = function (e) {
@@ -42,9 +39,8 @@ var markedVersions = {
 };
 };
 var markedVersionCache = {};
 var markedVersionCache = {};
 
 
-var iframeLoaded = false;
 $previewIframe.addEventListener('load', function () {
 $previewIframe.addEventListener('load', function () {
-  iframeLoaded = true;
+  lastInput = '';
   inputDirty = true;
   inputDirty = true;
 });
 });
 
 
@@ -188,7 +184,7 @@ $clearElem.addEventListener('click', function () {
 }, false);
 }, false);
 
 
 function setDefaultOptions() {
 function setDefaultOptions() {
-  if (useWorker) {
+  if (window.Worker) {
     messageWorker({
     messageWorker({
       task: 'defaults',
       task: 'defaults',
       version: markedVersions[$markedVerElem.value]}
       version: markedVersions[$markedVerElem.value]}
@@ -270,7 +266,7 @@ function updateLink() {
 }
 }
 
 
 function updateVersion() {
 function updateVersion() {
-  if (useWorker) {
+  if (window.Worker) {
     handleInput();
     handleInput();
     return Promise.resolve();
     return Promise.resolve();
   }
   }
@@ -297,7 +293,7 @@ function updateVersion() {
 var delayTime = 1;
 var delayTime = 1;
 var checkChangeTimeout = null;
 var checkChangeTimeout = null;
 function checkForChanges() {
 function checkForChanges() {
-  if (inputDirty && (typeof marked !== 'undefined' || (useWorker)) && $markedVerElem.value !== 'commit') {
+  if (inputDirty && $markedVerElem.value !== 'commit' && (typeof marked !== 'undefined' || window.Worker)) {
     inputDirty = false;
     inputDirty = false;
 
 
     updateLink();
     updateLink();
@@ -317,7 +313,7 @@ function checkForChanges() {
     var hash = version + markdown + optionsString;
     var hash = version + markdown + optionsString;
     if (lastInput !== hash) {
     if (lastInput !== hash) {
       lastInput = hash;
       lastInput = hash;
-      if (useWorker) {
+      if (window.Worker) {
         delayTime = 100;
         delayTime = 100;
         messageWorker({
         messageWorker({
           task: 'parse',
           task: 'parse',
@@ -371,9 +367,9 @@ function setResponseTime(ms) {
 }
 }
 
 
 function setParsed(parsed, lexed) {
 function setParsed(parsed, lexed) {
-  if (iframeLoaded) {
+  try {
     $previewIframe.contentDocument.body.innerHTML = parsed;
     $previewIframe.contentDocument.body.innerHTML = parsed;
-  }
+  } catch (ex) {}
   $htmlElem.value = parsed;
   $htmlElem.value = parsed;
   $lexerElem.value = lexed;
   $lexerElem.value = lexed;
 }
 }

+ 9 - 1
docs/demo/worker.js

@@ -1,4 +1,12 @@
-/* global marked */
+/* globals marked, unfetch, ES6Promise */
+if (!self.Promise) {
+  self.importScripts('https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.js');
+  self.Promise = ES6Promise;
+}
+if (!self.fetch) {
+  self.importScripts('https://cdn.jsdelivr.net/npm/unfetch/dist/unfetch.umd.js');
+  self.fetch = unfetch;
+}
 var versionCache = {};
 var versionCache = {};
 var currentVersion;
 var currentVersion;
 onmessage = function (e) {
 onmessage = function (e) {