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


161

使用“ $('html').html()我”可以在<html>标记(<head><body>,等)。但是,如何获取<html>标记的实际HTML (带有属性)?

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

Answers:


305

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

document.documentElement

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

更新:要然后将html元素作为字符串获取,您可以执行以下操作:

document.documentElement.outerHTML

1
有关documentElement浏览器兼容性的更多信息,请参阅此问题:stackoverflow.com/q/11391827/177710
奥利弗

您多久引用一次html元素!?一般来说,我认为性能不应该成为问题。无论如何,这实际上是一个更好的答案,但是它是在获奖之后才出现的。
posit

42

这是仅通过JS获取html DOM元素的方法:

var htmlElement = document.getElementsByTagName("html")[0];

要么

var htmlElement = document.querySelector("html");

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

$(htmlElement).attr(INSERT-ATTRIBUTE-NAME);

如果您可以解释为什么它回答了问题,那么您的答案会好得多。另外,请突出显示代码,然后单击{}按钮或按ctrl + k将其标记为代码。
2013年

18

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

var htmlEl = document.body.parentNode;

然后,您可以获得内部HTML内容:

var inner = htmlEl.innerHTML;

这样看来似乎快一些。但是,如果仅获取HTML元素,则document.body.parentNode似乎要快得多

获得HTML元素后,可以使用getAttributesetAttribute方法将属性弄乱。

对于DOCTYPE,可以使用document.doctype,在此问题中已进行了详细说明。


4
请注意:如果正文在文档上尚不可用,这将失败。
DataDink

3
在这种情况下,document.head.parentNode如果有head元素,它将仍然有效。
mahemoff 2014年

15

在jQuery中:

var html_string = $('html').outerHTML()

用简单的Javascript:

var html_string = document.documentElement.outerHTML

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.