2010-01-20 60 views
4

好的我不用js知道,但是有沒有辦法用它獲取頁面的真實源代碼?用JavaScript獲取真實的源代碼?

document.body.innerHTML例如給出某種「固定」版本,其中格式錯誤的標籤已被刪除。

我猜在原始頁面上使用XMLHttpRequest可能會起作用,但似乎有點愚蠢。

+1

爲什麼它看起來很愚蠢? – Upperstage

+1

爲什麼你需要代碼?這將影響你使用的工具。也就是說,如果你需要檢查它,然後FireBug,否則如果你需要抓取它,XMLHttpRequest –

+0

似乎有點愚蠢的瀏覽器不保存原來的東西。爲什麼不能將畸形標記包含在DOM模型中,即使它們沒有被繪製或者其他東西? – graw

回答

4

發生這種情況是因爲瀏覽器解析DOM並且不會將HTML保留在內存中。返回給您的是瀏覽器將當前DOM轉換回HTML,這是大寫標籤和缺少自適應標籤(如果適用)的原因。

XMLHttpRequest將是最好的選擇。在大多數情況下,假設服務器不發送no-cache標頭,並且HTML頁面已經完成下載,XMLHttpRequest幾乎是即時的,因爲文件是從緩存中獲取的。

+3

但是,如果頁面是在服務器上動態生成的,則內容可能在原始加載和通過XMLHttpRequest獲取它之間發生了變化。 – ntownsend

+0

非常感謝所有非常快速的建議!我需要格式不正確的html/javascript來解析它自己,我想它不會將它變成DOM,但它會被執行。是的,我想XMLHttpRequest將會足夠快。 – graw

+0

@ntownsend - 非常好的一點。 –

2

我想在閱讀或複製源文件時通常使用FireBug。

3

對於訪問相同來源的JS,XMLHttpRequest非常好。您可以使用這種技術以「原始」格式訪問任何JS文檔,而無需瀏覽器阻礙(即轉換爲DOM並返回)。

我不確定我是否理解你的評論回覆:XMLHttpRequest很愚蠢:是因爲你擔心潛在的重複工作?即從原始服務器獲取代碼2次。