How do I get the entire page's HTML with jQuery?

I used $(document).html(), but that threw an error... is there a way to get everything?


Solution 1:

Edit: Use XMLSerializer()

Don't forget the <html> tag can have attributes too. If you want the whole document this should work.

 $('html')[0].outerHTML

It's also trivial without jQuery.

document.documentElement.outerHTML

If you also want to include the doctype, it's a little more involved.

var getDocTypeAsString = function () { 
    var node = document.doctype;
    return node ? "<!DOCTYPE "
         + node.name
         + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '')
         + (!node.publicId && node.systemId ? ' SYSTEM' : '') 
         + (node.systemId ? ' "' + node.systemId + '"' : '')
         + '>\n' : '';
};

getDocTypeAsString() + document.documentElement.outerHTML   

Solution 2:

You could try:

$("html").html();

If you want to also capture the html tags you could concatenate them to the html like this:

function getPageHTML() {
  return "<html>" + $("html").html() + "</html>";
}