diff --git a/src/legacy/domParserTextHtml.js b/src/legacy/domParserTextHtml.js new file mode 100644 index 0000000000..f5a03ae442 --- /dev/null +++ b/src/legacy/domParserTextHtml.js @@ -0,0 +1,36 @@ +/* + * DOMParser HTML extension + * 2019-11-13 + * + * By Eli Grey, http://eligrey.com + * Public domain. + * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + */ + +/*! @source https://gist.github.com/1129031 */ + +(function (DOMParser) { + 'use strict'; + + const DOMParser_proto = DOMParser.prototype; + const real_parseFromString = DOMParser_proto.parseFromString; + + // Firefox/Opera/IE throw errors on unsupported types + try { + // WebKit returns null on unsupported types + if ((new DOMParser).parseFromString('', 'text/html')) { + // text/html parsing is natively supported + return; + } + } catch (ex) { /* noop */ } + + DOMParser_proto.parseFromString = function (markup, type) { + if (/^\s*text\/html\s*(?:;|$)/i.test(type)) { + const doc = document.implementation.createHTMLDocument(''); + doc.documentElement.innerHTML = markup; + return doc; + } else { + return real_parseFromString.apply(this, arguments); + } + }; +}(DOMParser)); diff --git a/src/scripts/site.js b/src/scripts/site.js index ccfbe9d308..9a167ff5d2 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -29,6 +29,7 @@ import { pageClassOn, serverAddress } from './clientUtils'; import '../libraries/screensavermanager'; import './serverNotifications'; import '../components/playback/playerSelectionMenu'; +import '../legacy/domParserTextHtml'; import '../legacy/focusPreventScroll'; import '../legacy/vendorStyles'; import SyncPlay from '../components/syncPlay/core';