有沒有辦法使用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