Get the whole document's html with JavaScript/JQuery

前端 未结 8 1132
无人及你
无人及你 2021-02-14 16:54

I know it\'s already discussed here, but there were no solution to get the whole document (including doctype).

$(document).html(); returns null

相关标签:
8条回答
  • 2021-02-14 17:10

    This is a function which has support in IE6+, it does't use outerHTML for even more support, it adds the doctype and uses a few tricks to get the html tag and its attributes. In order to receive a string with the doctype, and doesn't use outerHTML so it supports every browser. It uses a few tricks to get the html tag. Add this code:

    document.fullHTML = function () {
        var r = document.documentElement.innerHTML, t = document.documentElement.attributes, i = 0, l = '',
            d = '<!DOCTYPE ' + document.doctype.name + (document.doctype.publicId ? ' PUBLIC "' + document.doctype.publicId + '"' : '') + (!document.doctype.publicId && document.doctype.systemId ? ' SYSTEM' : '') + (document.doctype.systemId ? ' "' + document.doctype.systemId + '"' : '') + '>';
        for (; i < t.length; i += 1) l += ' ' + t[i].name + '="' + t[i].value + '"';
        return d+'\n<html' + l + '>' + r + '</html>';
    }
    

    Now, you can run this function:

    console.log(document.fullHTML());
    

    This will return the HTML and doctype.

    I ran this on example.com, here are the results

    0 讨论(0)
  • 2021-02-14 17:13
    document.documentElement.innerHTML 
    

    will return you all document markup as string

    to get the whole doctype read this

    0 讨论(0)
  • 2021-02-14 17:14

    You can do

    new XMLSerializer().serializeToString(document);
    

    for all browsers newer than IE 9

    0 讨论(0)
  • 2021-02-14 17:14

    I have done it on browser's console

    document.documentElement;

    0 讨论(0)
  • 2021-02-14 17:19

    I don't think there is a direct access to the whole document (including the doctype), but this works :

    $.get(document.location, function(html) {
        // use html (which is the complete source code, including the doctype)
    });
    
    0 讨论(0)
  • 2021-02-14 17:20

    try this.

    $("html").html()
    

    document is a variable it dose not represent the html tag.

    EDIT

    To get the doctype one could use

    document.doctype
    
    0 讨论(0)
提交回复
热议问题