summaryrefslogtreecommitdiffstats
path: root/core/js/tests/html-domparser.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/js/tests/html-domparser.js')
-rw-r--r--core/js/tests/html-domparser.js46
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));