diff options
Diffstat (limited to 'core/js/tests/html-domparser.js')
-rw-r--r-- | core/js/tests/html-domparser.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/core/js/tests/html-domparser.js b/core/js/tests/html-domparser.js new file mode 100644 index 00000000000..ea22f9b8752 --- /dev/null +++ b/core/js/tests/html-domparser.js @@ -0,0 +1,46 @@ +/* + * DOMParser HTML extension + * 2012-09-04 + * + * By Eli Grey, http://eligrey.com + * Public domain. + * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + */ + +/*! @source https://gist.github.com/1129031 */ +/*global document, DOMParser*/ + +(function(DOMParser) { + "use strict"; + + var + DOMParser_proto = DOMParser.prototype + , 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) {} + + DOMParser_proto.parseFromString = function(markup, type) { + if (/^\s*text\/html\s*(?:;|$)/i.test(type)) { + var + doc = document.implementation.createHTMLDocument("") + ; + if (markup.toLowerCase().indexOf('<!doctype') > -1) { + doc.documentElement.innerHTML = markup; + } + else { + doc.body.innerHTML = markup; + } + return doc; + } else { + return real_parseFromString.apply(this, arguments); + } + }; +}(DOMParser)); |