有没有办法使用JavaScript访问页面的HTML源代码?如何从页面获取HTML源代码?
我知道我可以使用document.body.innerHTML
,但它只包含正文中的代码。我想要获取所有的页面源代码,包括头部和身体标签以及它们的内容,如果可能的话,还需要html标签和文档类型。 这可能吗?
有没有办法使用JavaScript访问页面的HTML源代码?如何从页面获取HTML源代码?
我知道我可以使用document.body.innerHTML
,但它只包含正文中的代码。我想要获取所有的页面源代码,包括头部和身体标签以及它们的内容,如果可能的话,还需要html标签和文档类型。 这可能吗?
使用
document.documentElement.outerHTML
或
document.documentElement.innerHTML
一种方式做,这将是重新请求使用XMLHttpRequest的页面,那么你会得到整个页面从Web服务器一字不差。
对于IE还可以使用:的document.all [0] .outerHTML
这可以使用XMLSerializer一衬垫来完成。
var generatedSource = new XMLSerializer().serializeToString(document);
其中给出字符串
<!DOCTYPE html><html><head>
<title>html - javascript page source code - Stack Overflow</title>
...
只要
页面的源代码可以被重新下载:
fetch(document.location.href)
.then(response => response.text())
.then(pageSource => /* ... */)
这是不可靠的,因为没有保证服务器下次会提供相同的内容。 – 2017-09-23 02:43:55
我不知道为什么在Firefox中document.documentElement中的对象不具有的outerHTML属性,而是用的innerHTML我就可以得到几乎所有的除外文档类型,所以谢谢你! – mck89 2009-09-02 13:14:36
@ mck89:没有浏览器,但IE会有'outerHTML'。 – 2009-09-02 13:21:42
请注意,您使用Firefox /大多数浏览器获得的源代码是您提供的“真实”源代码。在IE中,您将获得页面的“实时”HTML,包括用户对表单所做的任何更改,任何新的DOM内容等。在IE中,它也将是IE在请求.innerHTML时提供的混合大小写无效标记汤元素。 – scunliffe 2009-09-02 13:35:12