2009-09-02 15 views
17

Czy istnieje sposób dostępu do kodu źródłowego HTML strony za pomocą javascript?Jak uzyskać źródło HTML ze strony?

Wiem, że mogę używać document.body.innerHTML, ale zawiera tylko kod wewnątrz ciała. Chcę uzyskać cały kod źródłowy strony, w tym znaczniki head i body, wraz z ich zawartością, a jeśli to możliwe, również znacznik html i doctype. Czy to możliwe?

Odpowiedz

25

Zastosowanie

document.documentElement.outerHTML 

lub

document.documentElement.innerHTML 
+0

nie wiem dlaczego Firefox przedmiotem document.documentElement nie mają właściwość outerHTML, ale z innerHTML mogę dostać prawie wszystko z wyjątkiem doctype, dziękuję! – mck89

+7

@ mck89: bez przeglądarki, ale IE będzie mieć "zewnętrznyHTML". –

+5

Należy pamiętać, że źródłem, z którego korzystasz w Firefoksie/większości przeglądarek, jest "prawdziwe" źródło, z którego korzystałeś. W IE dostaniesz "żywy" HTML strony zawierający wszelkie zmiany wprowadzone przez użytkownika do formularzy, dowolną nową zawartość DOM itp. W IE będzie to również zupa o nieporowatych znacznikach, którą IE zapewnia przy żądaniu .innerHTML of elementy. – scunliffe

8

Jednym ze sposobów, aby to zrobić byłoby re-request stronę używając XMLHttpRequest, wtedy dostaniesz całą stronę dosłownie z serwera WWW.

0

dla IE można również użyć: document.all [0] .outerHTML

10

Można to zrobić w jednej liniowej z zastosowaniem XMLSerializer.

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

Który daje String

<!DOCTYPE html><html><head> 

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

Pod warunkiem, że

  • prawdziwy kod źródłowy HTML chciał (a nie aktualny DOM serization)
  • i że strona została obciążenia za pomocą GET metoda,

źródło strona może zostać ponownie pobrane:

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

To jest niewiarygodne, ponieważ nie ma gwarancji, że serwer będzie wyświetlał tę samą zawartość następnym razem. –

Powiązane problemy