2009-09-02 20 views
17

¿Hay alguna manera de acceder al código fuente HTML de la página mediante javascript?¿Cómo obtengo el código HTML de la página?

Sé que puedo usar document.body.innerHTML pero solo contiene el código dentro del cuerpo. Quiero obtener todo el código fuente de la página, incluidas las etiquetas de cabeza y cuerpo, con su contenido y, si es posible, también la etiqueta html y el doctype. ¿Es posible?

Respuesta

25

Uso

document.documentElement.outerHTML 

o

document.documentElement.innerHTML 
+0

No sé por qué en Firefox el objeto document.documentElement no tiene la propiedad outerHTML, pero con el innerHTML i puede conseguir casi todo, excepto la doctype así que gracias! – mck89

+7

@ mck89: sin navegador, pero IE tendrá 'outerHTML'. –

+5

Tenga en cuenta que la fuente que obtiene con Firefox/la mayoría de los navegadores es la fuente "verdadera" que sirvió. En IE obtendrás el HTML "en vivo" de la página, incluidos los cambios que el usuario haya realizado en los formularios, cualquier nuevo contenido de DOM, etc. En IE, también será la sopa de etiquetas no válidas de combinación que IE proporciona al solicitar el .innerHTML de elementos. – scunliffe

8

Una forma de hacer esto sería para volver a la petición de la página utilizando XMLHttpRequest, entonces obtendrá toda la página palabra por palabra desde el servidor web.

0

Para IE también puede utilizar: document.all [0] .outerHTML

10

Esto se puede hacer en una sola línea usando XMLSerializer.

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

cual da cadena

<!DOCTYPE html><html><head> 

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

Siempre que

  • cierto código fuente HTML se quiere (no corriente serization DOM)
  • y que la página se carga utilizando GET método,

la fuente de la página se puede volver a descargar:

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

Eso no es confiable porque no hay garantía de que el servidor muestre el mismo contenido la próxima vez. –

Cuestiones relacionadas