2009-09-02 160 views
17

有没有办法使用JavaScript访问页面的HTML源代码?如何从页面获取HTML源代码?

我知道我可以使用document.body.innerHTML,但它只包含正文中的代码。我想要获取所有的页面源代码,包括头部和身体标签以及它们的内容,如果可能的话,还需要html标签和文档类型。 这可能吗?

回答

25

使用

document.documentElement.outerHTML 

document.documentElement.innerHTML 
+0

我不知道为什么在Firefox中document.documentElement中的对象不具有的outerHTML属性,而是用的innerHTML我就可以得到几乎所有的除外文档类型,所以谢谢你! – mck89 2009-09-02 13:14:36

+7

@ mck89:没有浏览器,但IE会有'outerHTML'。 – 2009-09-02 13:21:42

+5

请注意,您使用Firefox /大多数浏览器获得的源代码是您提供的“真实”源代码。在IE中,您将获得页面的“实时”HTML,包括用户对表单所做的任何更改,任何新的DOM内容等。在IE中,它也将是IE在请求.innerHTML时提供的混合大小写无效标记汤元素。 – scunliffe 2009-09-02 13:35:12

8

一种方式做,这将是重新请求使用XMLHttpRequest的页面,那么你会得到整个页面从Web服务器一字不差。

0

对于IE还可以使用:的document.all [0] .outerHTML

10

这可以使用XMLSerializer一衬垫来完成。

var generatedSource = new XMLSerializer().serializeToString(document); 

其中给出字符串

<!DOCTYPE html><html><head> 

<title>html - javascript page source code - Stack Overflow</title> 
... 
0

只要

  • 真正的HTML源代码被通缉(不是当前的DOM serization)
  • 并且该页面使用负载GET方法,

页面的源代码可以被重新下载:

fetch(document.location.href) 
    .then(response => response.text()) 
    .then(pageSource => /* ... */) 
+0

这是不可靠的,因为没有保证服务器下次会提供相同的内容。 – 2017-09-23 02:43:55