如何使用JavaScript/jQuery获取<html>标签HTML?

Jus*_*ton 138 javascript jquery

使用$('html').html()我可以得到内的HTML <html>标签(<head>,<body>,等).但是如何获得<html>标签的实际HTML (带属性)?

或者,是否可以<html>使用jQuery(或普通的旧JavaScript)获取页面的整个HTML(包括doctype 等)?

Mic*_*ael 267

获取html元素的最简单方法是:

document.documentElement
Run Code Online (Sandbox Code Playgroud)

以下是参考:https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement.

更新:然后将html元素作为字符串抓取:

document.documentElement.outerHTML
Run Code Online (Sandbox Code Playgroud)

  • 这种方法也是最快的.请参阅http://jsperf.com/query-html-element (2认同)
  • 很好,我使用以下方法实现了亮度滑块: `&lt;input type="range" min="0.50" max="1.0" value="0.95" step="0.01" onchange= "document.documentElement.style.filter= '亮度('+this.value+')'"&gt;` (2认同)

pos*_*abs 37

这是如何使用JS纯粹获取html DOM元素:

var htmlElement = document.getElementsByTagName("html")[0];
Run Code Online (Sandbox Code Playgroud)

要么

var htmlElement = document.querySelector("html");
Run Code Online (Sandbox Code Playgroud)

如果你想使用jQuery从中获取属性......

$(htmlElement).attr(INSERT-ATTRIBUTE-NAME);
Run Code Online (Sandbox Code Playgroud)


dou*_*rve 17

除了其他一些答案,您还可以通过以下方式访问HTML元素:

var htmlEl = document.body.parentNode;
Run Code Online (Sandbox Code Playgroud)

然后你可以得到内在的HTML内容:

var inner = htmlEl.innerHTML;
Run Code Online (Sandbox Code Playgroud)

这样做似乎稍微快一些.但是,如果您只是获取HTML元素,那么document.body.parentNode似乎要快得多.

获得HTML元素后,可以使用getAttributesetAttribute方法混淆属性.

对于DOCTYPE,您可以使用document.doctype,在此问题中详细说明.

  • 就像一个注释:如果文档上尚未提供正文,则会失败. (4认同)
  • 在这种情况下,如果有head元素,`document.head.parentNode`仍然可以工作. (2认同)

小智 15

在jQuery中:

var html_string = $('html').outerHTML()
Run Code Online (Sandbox Code Playgroud)

在普通的Javascript中:

var html_string = document.documentElement.outerHTML
Run Code Online (Sandbox Code Playgroud)