Czy istnieje sposób w JS, aby cały kod HTML w tagach html, jako ciąg znaków?Jak uzyskać cały dokument HTML jako ciąg znaków?
document.documentElement.??
Czy istnieje sposób w JS, aby cały kod HTML w tagach html, jako ciąg znaków?Jak uzyskać cały dokument HTML jako ciąg znaków?
document.documentElement.??
MS dodał outerHTML
i innerHTML
właściwości jakiś czas temu.
Zgodnie z MDN, outerHTML
jest obsługiwany w przeglądarkach 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
jest w specyfikacji DOM Parsing and Serialization.
Zapoznaj się z quirksmode, aby uzyskać zgodność z przeglądarką, co będzie dla Ciebie najlepsze. Wszystkie wsparcie innerHTML
.
var markup = document.documentElement.innerHTML;
alert(markup);
outerHTML nie otrzymuje typu dokumentu. – CMCDragonkai
pracował jak urok! Dziękuję Ci! czy istnieje sposób na pobranie rozmiaru wszystkich/wszystkich plików połączonych z dokumentem, w tym plików js i css? – www139
@CMCDragonkai: Można [pobrać osobno dokumentację] (http://stackoverflow.com/a/10162353/157385) i wstawić go do łańcucha znaczników. Nie idealne, wiem, ale możliwe. –
Wierzę, że document.documentElement.outerHTML
powinien zwrócić to za Ciebie.
Zgodnie z MDN, outerHTML
jest obsługiwany w przeglądarkach 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
jest w specyfikacji DOM Parsing and Serialization.
Strona MSDN na outerHTML
property informuje, że jest obsługiwana w IE 5+. Odpowiedź Colina łączy się ze stroną quirksmode W3C, która oferuje dobre porównanie kompatybilności z różnymi przeglądarkami (również w przypadku innych funkcji DOM).
Not wszystkie przeglądarki obsługują to. –
@Colin: Tak, dobra uwaga. Z doświadczenia wiem, że zarówno IE 6+, jak i Firefox go obsługują, chociaż strona z linkami do quirksmode sugeruje inaczej ... – Noldorin
Firefox nie obsługuje OuterHTML. Jest IE zastrzeżony. https://developer.mozilla.org/En/Migrate_apps_from_Internet_Explorer_to_Mozilla#Generate_and_manipulate_content –
document.documentElement.outerHTML
Nie wszystkie przeglądarki to obsługują. –
Obsługiwane w przeglądarce 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 ([MDN] (https://developer.mozilla.org/en -US/docs/DOM/element.outerHTML)). 'outerHTML' znajduje się w specyfikacji [DOM Parsing and Serialization] (http://domparsing.spec.whatwg.org/#outerhtml). – XP1
Odpowiedź Colina jest bardziej szczegółowa. –
document.documentElement.innerHTML
To nie zwraca znacznika ''. –
Prawidłowy sposób jest rzeczywiście:
webBrowser1.DocumentText
Tylko jeśli hostujesz stronę w formancie WinForms WebBrowser ... –
Zawsze używam
document.getElementsByTagName('html')[0].innerHTML
Prawdopodobnie nie właściwa droga, ale mogę to zrozumieć, gdy widzę go.
Jest to niepoprawne, ponieważ nie zwróci znacznika '
Można również zrobić:
document.getElementsByTagName('html')[0].innerHTML
Nie dostaniesz doctype lub tag HTML, ale wszystko inne ...
prawdopodobnie tylko IE:
> webBrowser1.DocumentText
dla FF górę od 1.0:
//serialize current DOM-Tree incl. changes/edits to ss-variable
var ns = new XMLSerializer();
var ss= ns.serializeToString(document);
alert(ss.substr(0,300));
może pracować w FF. (Pokazuje BARDZO PIERWSZE 300 znaków z BARDZO początkującego tekstu źródłowego, głównie doctype-defs.)
ALE należy pamiętać, że normalny "Zapisz jako" -Dialog z FF MIGHT NIE zapisuje bieżący stan strona, raczej oryginalnie załadowany tekst X/h/tml-source !! (POST-up ss do jakiegoś pliku tymczasowego i przekierowanie do niego może dostarczyć zapisany tekst źródłowy z wcześniejszymi zmianami/edycjami).
Chociaż FF zaskakuje dobrym odzyskiem na "powrót" i NICE włączenie stanów/wartości w "Zapisz (jako) ..."dla pól wejściowych podobny, textarea itd., A nie od elementów contentEditable/designMode ...
jeśli nie xhtml- resp. Pliku XML (typu MIME, a nie tylko do nazwy pliku rozszerzenie!), można użyć document.open/write/close, aby ustawić zawartość pliku do warstwy źródłowej, która zostanie zapisana w oknie dialogowym zapisu użytkownika z menu Plik/Zapisz w FF. zobacz: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite lub
https://developer.mozilla.org/en-US/docs/Web/API/document.write
Neutralny na pytania X (hT) ML, spróbuj "view-source: http: // ..." jako wartości src-attrib od An (skrypt wykonany !?) iframe, - aby uzyskać dostęp do dokumentu iframes w FF:
<iframe-elementnode>.contentDocument
, patrz google "mdn contentDocument" dla apletu. członkowie, na przykład "textContent". "Tyle lat temu nie lubiłem się czołgać. Jeśli nadal jest pilna potrzeba, wspomnij o tym, że muszę nurkować w ...
Próbowałem różnych odpowiedzi, aby zobaczyć, co jest zwracane. Używam najnowszej wersji Chrome.
Sugestia document.documentElement.innerHTML;
powrócił <head> ... </body>
Gaby sugestia document.getElementsByTagName('html')[0].innerHTML;
powrócił samo.
Sugestia zwróciła <html><head> ... </body></html>
, która jest wszystkim oprócz "dokumentu".
można pobrać obiekt doctype z document.doctype;
ta zwraca obiekt, a nie ciąg znaków, więc jeśli trzeba wyodrębnić szczegóły jak ciągi dla wszystkich doctypes włącznie HTML5 jest to opisane tutaj: Get DocType of an HTML as string with Javascript
I chciał tylko HTML5, dzięki czemu następuje było dla mnie za mało, aby utworzyć cały dokument:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
To jest najbardziej kompletna odpowiedź i powinna zostać zaakceptowana. Od 2016 roku zgodność z przeglądarką jest kompletna, a jej szczegółowe omówienie (jak w obecnie akceptowanej odpowiedzi) nie jest już konieczne. –
Zastosowanie document.documentElement
.
samo pytanie odpowiedział tutaj: https://stackoverflow.com/a/7289396/2164160
To pytanie powinno zostać zamknięte jako prawie duplikat tego, który jest znacznie starszy. W każdym razie interesujące jest to, że potrzebujesz '.outerHTML' i uzyskać' document.doctype', a najbardziej kompletną odpowiedzią jest [Paolo's] (http://stackoverflow.com/a/26905999/1269037). –
Można zrobić
new XMLSerializer().serializeToString(document)
w przeglądarkach nowsze niż IE 9.
To była * pierwsza * ** poprawna odpowiedź ** zgodnie ze znacznikami daty/czasu. Części strony takie jak deklaracja XML * nie * zostaną uwzględnione, a przeglądarki będą manipulować kodem podczas korzystania z innych "odpowiedzi". Jest to * tylko * post, który powinien zostać poddany pod głosowanie (DOS jest opublikowany trzy dni później). Ludzie muszą zwracać uwagę! – John
To nie jest całkowicie poprawne, ponieważ serializujeToString wykonuje kodowanie HTML. Na przykład, jeśli twój kod zawiera style definiujące czcionki, takie jak "Times New Roman", Times, serif, cytaty będą kodowane html. Być może nie jest to ważne dla niektórych z was, ale dla mnie jest to ... – Marko
@John oraz OP faktycznie prosi o "cały HTML _within_ tagów html". A wybrana najlepsza odpowiedź Colina Burnetta pozwala to osiągnąć. Ta konkretna odpowiedź (Erika) będzie zawierać znaczniki html i doctype. To powiedziawszy, był to dla mnie absolutny diament i dokładnie to, czego szukałem! Twój komentarz też pomógł, ponieważ dzięki temu mogłem poświęcić więcej czasu na tę odpowiedź, więc dziękuję :) – evanrmurphy
Jedyna prawidłowa odpowiedź: http://stackoverflow.com/questions/ 817218/how-to-get-the-whole-document-html-as-a-string # answer-35917295 (** zatrzymaj głosowanie wewnętrzne/zewnętrzne odpowiedzi HTML, NIE udostępniają całego źródła! **) – John