2009-09-02 118 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