diff --git a/packages/node_modules/@node-red/editor-client/src/js/polyfills.js b/packages/node_modules/@node-red/editor-client/src/js/polyfills.js index 0e7206f7a..b8f36af69 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/polyfills.js +++ b/packages/node_modules/@node-red/editor-client/src/js/polyfills.js @@ -53,5 +53,31 @@ Set.prototype.constructor = Set; } + if (window.navigator.msSaveBlob) { + // IE does not support data uri scheme for downloading data + window.addEventListener("click", function (ev) { + var tgt = ev.target; + if ((tgt.tagName === "A") && + tgt.hasAttribute("download") && + tgt.hasAttribute("href")) { + // partial support of data uri downloading + var filename = tgt.getAttribute("download"); + var dataUri = tgt.getAttribute("href"); + var match = /^data:([^,]+),(.*)/.exec(dataUri); + if (match) { + ev.preventDefault(); + var enc = match[1]; + var data = decodeURIComponent(match[2]); + var blob = new Blob([data], { + type: enc, + }); + navigator.msSaveBlob(blob, filename); + } + else { + console.log("download not supported:", tgt); + } + } + }); + } } })();