From 9b8568b6712fe44427ab3246d21c1b11c38740e7 Mon Sep 17 00:00:00 2001 From: Albert Peschar Date: Thu, 31 Jan 2019 10:52:53 +0200 Subject: [PATCH] Fix IE double-execution bug by setting src before type --- src/Filters/HTML/ScriptsDeferring/scripts-loader.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Filters/HTML/ScriptsDeferring/scripts-loader.js b/src/Filters/HTML/ScriptsDeferring/scripts-loader.js index eddc9dca..1a67f6fc 100644 --- a/src/Filters/HTML/ScriptsDeferring/scripts-loader.js +++ b/src/Filters/HTML/ScriptsDeferring/scripts-loader.js @@ -91,20 +91,23 @@ phast.ScriptsLoader.Utilities = function (document) { } function restoreOriginals(element) { - var shouldRemoveType = !element.hasAttribute('data-phast-original-type'); element.removeAttribute('data-phast-params'); + var attrs = {}; Array.prototype .map.call(element.attributes, function (attr) { return attr.nodeName; }) - .forEach(function (attrName) { + .map(function (attrName) { var matches = attrName.match(/^data-phast-original-(.*)/i); if (matches) { - element.setAttribute(matches[1], element.getAttribute(attrName)); + attrs[matches[1].toLowerCase()] = element.getAttribute(attrName); element.removeAttribute(attrName); } }); - if (shouldRemoveType) { + Object.keys(attrs).sort().map(function (attr) { + element.setAttribute(attr, attrs[attr]); + }); + if (!('type' in attrs)) { element.removeAttribute('type'); } }