DOMParser

Benchmark created by DOMParser vs Temporary Div on


Test runner

Ready to run.

Testing in
TestOps/sec
DOMParser
/*
 * 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));

var markupString = '<div class="foo"><h1 class="title"><a href="http://google.com">Link To <span class="company-name">Google</span></a></h1></div>';
var parser = new DOMParser();
var markup = parser.parseFromString(markupString, 'text/html');
ready
Temporary Div
var markupString = '<div class="foo"><h1 class="title"><a href="http://google.com">Link To <span class="company-name">Google</span></a></h1></div>';
var tmpDiv = document.createElement('div');
tmpDiv.innerHTML = markupString;
var markup = tmpDiv.firstChild;
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by DOMParser vs Temporary Div on