¿Hay alguna manera en JS de obtener todo el HTML dentro de las etiquetas html , como una cadena?
document.documentElement.??
javascript
html
document
tostring
El flash
fuente
fuente
document.body.parentElement.innerHTML
Respuestas:
MS agregó las propiedades
outerHTML
yinnerHTML
hace algún tiempo.Según MDN ,
outerHTML
es compatible con Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile y Safari Mobile.outerHTML
está en la especificación de análisis y serialización DOM .Vea quirksmode para la compatibilidad del navegador para lo que funcionará para usted. Todo el apoyo
innerHTML
.fuente
Tu puedes hacer
en navegadores más nuevos que IE 9
Ver https://caniuse.com/#feat=xml-serializer
fuente
html
etiqueta que el servidor nunca envió :(Creo que
document.documentElement.outerHTML
debería devolverte eso.Según MDN ,
outerHTML
es compatible con Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile y Safari Mobile.outerHTML
está en la especificación de análisis y serialización DOM .La página de MSDN en la
outerHTML
propiedad señala que es compatible con IE 5+. La respuesta de Colin enlaza con la página W3C quirksmode, que ofrece una buena comparación de la compatibilidad entre navegadores (para otras funciones DOM también).fuente
Intenté las diferentes respuestas para ver qué se devuelve. Estoy usando la última versión de Chrome.
La sugerencia
document.documentElement.innerHTML;
regresó<head> ... </body>
La sugerencia de Gaby
document.getElementsByTagName('html')[0].innerHTML;
devolvió lo mismo.La sugerencia
document.documentElement.outerHTML;
regresó,<html><head> ... </body></html>
que es todo, aparte del 'doctype'.Puede recuperar el objeto doctype con
document.doctype;
Esto devuelve un objeto, no una cadena, por lo que si necesita extraer los detalles como cadenas para todos los doctypes hasta HTML5 incluido, se describe aquí: Obtenga DocType de un HTML como cadena con JavascriptSolo quería HTML5, por lo que lo siguiente fue suficiente para crear el documento completo:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
fuente
También puedes hacer:
No obtendrá la etiqueta Doctype o html, pero todo lo demás ...
fuente
fuente
outerHTML
está en la especificación de análisis y serialización DOM .PROBABLEMENTE SOLO IE:
para FF desde 1.0:
puede funcionar en FF. (Muestra los PRIMEROS 300 caracteres desde el principio del texto fuente, principalmente doctype-defs).
¡PERO tenga en cuenta que el diálogo "Guardar como" normal de FF NO PODRÍA guardar el estado actual de la página, sino el X / h / tml-source-text cargado originalmente! (un POST-up de ss a algún archivo temporal y redirigirlo a ese podría entregar un texto fuente guardable CON los cambios / ediciones previamente realizados).
Aunque FF sorprende por una buena recuperación en "back" y una NICE inclusión de estados / valores en "Save (as) ..." para CAMPOS de entrada, área de texto , etc., no en elementos en contenteditable / designMode ...
Si NO es un xhtml- resp. archivo xml (tipo mime, ¡NO solo extensión de nombre de archivo!), se puede usar document.open/write/close para CONFIGURAR la aplicación. contenido a la capa de origen, que se guardará en el diálogo de guardar del usuario desde el menú Archivo / Guardar de FF. ver: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite resp.
https://developer.mozilla.org/en-US/docs/Web/API/document.write
Neutral para las preguntas de X (ht) ML, intente con "view-source: http: // ..." como el valor de src-attrib de un iframe (¡hecho por script !?), - para acceder a un iframes- documento en FF:
<iframe-elementnode>.contentDocument
, consulte google "mdn contentDocument" para apr. miembros, como 'textContent' por ejemplo. Lo tengo hace años y no me gusta arrastrarme por él. Si todavía es una necesidad urgente, mencione esto, en el que tengo que sumergirme ...fuente
fuente
<html ...>
etiqueta.Uso
document.documentElement
.Misma pregunta respondida aquí: https://stackoverflow.com/a/7289396/2164160
fuente
.outerHTML
y para obtener eldocument.doctype
, y la respuesta más completa es la de Paolo .Para que las cosas también salgan de
<html>...</html>
la<!DOCTYPE ...>
declaración, lo más importante , puede recorrer document.childNodes, convirtiendo cada una en una cadena:Publiqué este código como document-outsidehtml en npm.
editar Tenga en cuenta que el código anterior depende de una función
doctypeToString
; su implementación podría ser la siguiente (el código a continuación se publica en npm como doctype-to-string ):fuente
Yo siempre uso
Probablemente no sea el camino correcto, pero puedo entenderlo cuando lo veo.
fuente
<html...>
etiqueta.Solo necesito doctype html y debería funcionar bien en IE11, Edge y Chrome. Utilicé el siguiente código, funciona bien.
y en su etiqueta de anclaje use así.
Ejemplo
fuente
Estoy usando
outerHTML
para elementos (el<html>
contenedor principal ), yXMLSerializer
para cualquier otra cosa, incluidos<!DOCTYPE>
comentarios aleatorios fuera del<html>
contenedor, o cualquier otra cosa que pueda estar allí. Parece que el espacio en blanco no se conserva fuera del<html>
elemento, por lo que agrego nuevas líneas de forma predeterminada consep="\n"
.fuente
Debe recorrer el documento childNodes y obtener el contenido externo HTML.
en VBA se ve así
con esto, le permite obtener todos los elementos de la página web, incluido el nodo <! DOCTYPE> si existe
fuente
La forma correcta es en realidad:
webBrowser1.DocumentText
fuente