Existe uma maneira no JS obter o HTML inteiro dentro das tags html , como uma string?
document.documentElement.??
javascript
html
document
tostring
O Flash
fonte
fonte
document.body.parentElement.innerHTML
Respostas:
A Microsoft adicionou as propriedades
outerHTML
einnerHTML
há algum tempo.De acordo com a MDN ,
outerHTML
é suportado no Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile e Safari Mobile.outerHTML
está na especificação de análise e serialização do DOM .Consulte quirksmode para compatibilidade do navegador para saber o que funcionará para você. Todo suporte
innerHTML
.fonte
Você pode fazer
em navegadores mais recentes que o IE 9
Consulte https://caniuse.com/#feat=xml-serializer
fonte
html
tag que o servidor nunca enviou :(Eu acredito que
document.documentElement.outerHTML
deveria devolver isso para você.De acordo com a MDN ,
outerHTML
é suportado no Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile e Safari Mobile.outerHTML
está na especificação de análise e serialização do DOM .A página MSDN na
outerHTML
propriedade observa que ela é suportada no IE 5+. A resposta de Colin está vinculada à página do modo quirks do W3C, que oferece uma boa comparação da compatibilidade entre navegadores (para outros recursos do DOM também).fonte
Eu tentei as várias respostas para ver o que é retornado. Estou usando a versão mais recente do Chrome.
A sugestão
document.documentElement.innerHTML;
retornou<head> ... </body>
A sugestão de Gaby
document.getElementsByTagName('html')[0].innerHTML;
retornou a mesma.A sugestão
document.documentElement.outerHTML;
retornou,<html><head> ... </body></html>
que é tudo à parte do 'doctype'.Você pode recuperar o objeto doctype com
document.doctype;
Isso retorna um objeto, não uma string, portanto, se você precisar extrair os detalhes como strings para todos os doctypes até e incluindo HTML5, será descrito aqui: Obter DocType de um HTML como string com JavascriptEu só queria HTML5, então o seguinte foi suficiente para criar o documento inteiro:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
fonte
Você também pode fazer:
Você não receberá a tag Doctype ou html, mas tudo o mais ...
fonte
fonte
outerHTML
está na especificação de análise e serialização do DOM .Provavelmente, ou seja:
para FF acima de 1.0:
pode funcionar em FF. (Mostra os MUITOS PRIMEIROS 300 caracteres desde o início de MUITO texto-fonte, principalmente doctype-defs.)
MAS esteja ciente de que o Diálogo normal "Salvar como" do FF NÃO PODE salvar o estado atual da página, e sim o X / h / tml-source-text originalmente carregado !! (um POST-up de ss para algum arquivo temporário e redirecionado para isso pode fornecer um texto-fonte salvável COM as alterações / edições anteriores feitas nele.)
Embora o FF surpreenda pela boa recuperação em "back" e por uma inclusão AGRADÁVEL de estados / valores em "Save (as) ..." para FIELDS, textarea etc., como entrada , não em elementos em contenteditable / designMode ...
Se NÃO for um xhtml- resp. xml-file (tipo MIME, NÃO apenas extensão-nome-de-arquivo!), pode-se usar document.open/write/close para definir o appr. conteúdo na camada de origem, que será salvo na caixa de diálogo de salvamento do usuário no menu Arquivo / Salvar do FF. Vejo: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite resp.
https://developer.mozilla.org/en-US/docs/Web/API/document.write
Neutro às questões de X (ht) ML, tente uma "view-source: http: // ..." como o valor do src-attrib de um iframe (feito por script !?), - para acessar um iframes- documento em FF:
<iframe-elementnode>.contentDocument
, consulte google "mdn contentDocument" para aprox. membros, como 'textContent', por exemplo. - Consegui isso anos atrás e não gosto de rastejar por isso. Se ainda é urgente, mencione isso, que eu mergulhei ...fonte
fonte
<html ...>
tag.Use
document.documentElement
.Mesma pergunta respondida aqui: https://stackoverflow.com/a/7289396/2164160
fonte
.outerHTML
e para obter adocument.doctype
resposta mais completa é a de Paolo .Para também deixar as coisas de fora da declaração
<html>...</html>
, mais importante<!DOCTYPE ...>
, você pode percorrer document.childNodes, transformando cada uma delas em uma string:Publiquei esse código como document-outerhtml no npm.
editar Observe que o código acima depende de uma função
doctypeToString
; sua implementação pode ser a seguinte (o código abaixo é publicado no npm como doctype-to-string ):fonte
Eu sempre uso
Provavelmente não é o caminho certo, mas posso entender quando o vejo.
fonte
<html...>
tag.Eu só preciso do doctype html e deve funcionar bem no IE11, Edge e Chrome. Eu usei o código abaixo funciona bem.
e na sua âncora, use assim.
Exemplo
fonte
Estou usando
outerHTML
elementos (o<html>
contêiner principal ) eXMLSerializer
qualquer outra coisa, incluindo<!DOCTYPE>
comentários aleatórios fora do<html>
contêiner ou qualquer outra coisa que possa estar lá. Parece que o espaço em branco não é preservado fora do<html>
elemento, então estou adicionando novas linhas por padrão comsep="\n"
.fonte
Você precisa percorrer o documento childNodes e obter o conteúdoHTML externo.
no VBA, fica assim
Com isso, é possível obter todos os elementos da página da web, incluindo o nó <! DOCTYPE>, se existir
fonte
A maneira correta é realmente:
webBrowser1.DocumentText
fonte