Czy jest sposób w JS, aby uzyskać cały HTML w tagach HTML jako ciąg?
document.documentElement.??
javascript
html
document
tostring
Błysk
źródło
źródło
document.body.parentElement.innerHTML
Odpowiedzi:
MS dodał
outerHTML
iinnerHTML
właściwości jakiś czas temu.Według MDN ,
outerHTML
jest obsługiwany w Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile i Safari Mobile.outerHTML
znajduje się w specyfikacji analizowania i serializacji DOM .Zobacz tryb quirksmode w celu uzyskania informacji na temat kompatybilności przeglądarki. Wszystkie wsparcie
innerHTML
.źródło
Możesz to zrobić
w przeglądarkach nowszych niż IE 9
Zobacz https://caniuse.com/#feat=xml-serializer
źródło
html
znacznika, którego serwer tak naprawdę nigdy nie wysłał :(Wierzę, że
document.documentElement.outerHTML
powinien ci to zwrócić.Według MDN ,
outerHTML
jest obsługiwany w Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile i Safari Mobile.outerHTML
znajduje się w specyfikacji analizowania i serializacji DOM .Strona MSDN
outerHTML
właściwości wskazuje, że jest obsługiwana w IE 5+. Odpowiedź Colina prowadzi do strony trybu quirksmode W3C, która oferuje dobre porównanie kompatybilności z różnymi przeglądarkami (także dla innych funkcji DOM).źródło
Próbowałem różnych odpowiedzi, aby zobaczyć, co jest zwracane. Korzystam z najnowszej wersji Chrome.
Sugestia
document.documentElement.innerHTML;
wróciła<head> ... </body>
Sugestia Gaby
document.getElementsByTagName('html')[0].innerHTML;
zwróciła to samo.document.documentElement.outerHTML;
Wróciła sugestia,<html><head> ... </body></html>
która jest wszystkim oprócz „doctype”.Możesz pobrać obiekt doctype za pomocą
document.doctype;
To zwraca obiekt, a nie ciąg, więc jeśli chcesz wyodrębnić szczegóły jako ciągi dla wszystkich typów dokumentów do HTML5 włącznie, jest to opisane tutaj: Pobierz DocType kodu HTML jako ciąg z JavascriptemChciałem tylko HTML5, więc wystarczyło, że utworzyłem cały dokument:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
źródło
Możesz także:
Nie otrzymasz tagu Doctype ani html, ale wszystko inne ...
źródło
źródło
outerHTML
znajduje się w specyfikacji analizowania i serializacji DOM .PRAWDOPODOBNIE TYLKO IE:
dla FF od 1.0:
może działać w FF. (Pokazuje BARDZO PIERWSZE 300 znaków od BARDZO początku tekstu źródłowego, głównie doctype-defs.)
ALE pamiętaj, że normalny „Zapisz jako” -Dialog FF MOGĄ NIE zapisać bieżącego stanu strony, a raczej oryginalnie załadowanego X / h / tml-source-text !! (POST-up ss do jakiegoś pliku tymczasowego i przekierowanie do niego może dostarczyć zapisywalny tekst źródłowy ze zmianami / edycjami wcześniej dokonanymi).
Chociaż FF zaskakuje dobrym odzyskiem na „wstecz” i NICJĄ zawierającą stany / wartości w „Zapisz (as) ...” dla FIELDS podobnych do danych wejściowych, pola tekstowego itp., A nie na elementach w contentediable / designMode ...
Jeśli NIE, xhtml-resp. plik xml (typ MIME, NIE tylko rozszerzenie pliku!), można użyć document.open/write/close, aby USTAWIĆ appr. zawartość do warstwy źródłowej, która zostanie zapisana w oknie dialogowym zapisu użytkownika z menu Plik / Zapisz FF. patrz: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite i .
https://developer.mozilla.org/en-US/docs/Web/API/document.write
Neutralnie na pytania dotyczące X (ht) ML, spróbuj użyć „view-source: http: // ...” jako wartości atrybutu src atrybutu iframe (wykonanego w skrypcie !?), - aby uzyskać dostęp do iframe- dokument w FF:
<iframe-elementnode>.contentDocument
, zobacz google „mdn contentDocument” dla ok. członkowie, na przykład „textContent”. Dostałem to lata temu i nie lubię się czołgać. Jeśli nadal pilna potrzeba, wspomnij o tym, że muszę nurkować ...źródło
źródło
<html ...>
tagu.Zastosowanie
document.documentElement
.To samo pytanie, na które odpowiedziano tutaj: https://stackoverflow.com/a/7289396/2164160
źródło
.outerHTML
i aby uzyskaćdocument.doctype
, a najbardziej kompletną odpowiedzią jest odpowiedź Paola .Aby uzyskać także rzeczy poza deklaracją, co
<html>...</html>
najważniejsze<!DOCTYPE ...>
, możesz przejść przez document.childNodes, zamieniając każdy w ciąg znaków:Ten kod opublikowałem jako dokument-zewnętrzny_html na npm.
edytuj Uwaga powyższy kod zależy od funkcji
doctypeToString
; jego implementacja może wyglądać następująco (poniższy kod jest opublikowany na npm jako doctype-to-string ):źródło
Zawsze używam
Prawdopodobnie nie jest to właściwa droga, ale rozumiem ją, kiedy ją widzę.
źródło
<html...>
tagu.Potrzebuję tylko html doctype i powinien działać dobrze w IE11, Edge i Chrome. Użyłem poniżej kodu, działa dobrze.
i użyj tego w tagu kotwicy.
Przykład
źródło
Używam
outerHTML
do elementów (głównego<html>
kontenera) iXMLSerializer
do wszystkiego innego, w tym<!DOCTYPE>
losowych komentarzy poza<html>
kontenerem lub cokolwiek innego, co może tam być. Wygląda na to, że spacje nie są zachowywane poza<html>
elementem, więc domyślnie dodam nowe linie za pomocąsep="\n"
.źródło
Musisz iterować dokument childNodes i pobierać treść outerHTML.
w VBA wygląda to tak
użycie tego pozwala uzyskać wszystkie elementy strony internetowej, w tym węzeł <! DOCTYPE>, jeśli istnieje
źródło
Właściwy sposób to w rzeczywistości:
webBrowser1.DocumentText
źródło