Есть ли способ в JS получить весь HTML в тегах html, как строка?Как получить весь документ HTML как строку?
document.documentElement.??
Есть ли способ в JS получить весь HTML в тегах html, как строка?Как получить весь документ HTML как строку?
document.documentElement.??
MS добавил outerHTML
и innerHTML
свойства некоторое время назад.
Согласно MDN, outerHTML
поддерживается в Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile и Safari Mobile. outerHTML
находится в спецификации DOM Parsing and Serialization.
См. quirksmode для совместимости с браузерами, которые будут работать для вас. Вся поддержка innerHTML
.
var markup = document.documentElement.innerHTML;
alert(markup);
externalHTML не получает doctype. – CMCDragonkai
работал как шарм! Спасибо! есть ли способ получить размер всех/всех файлов, связанных с документом, включая js и css-файлы? – www139
@CMCDragonkai: Вы можете [получить doctype отдельно] (http://stackoverflow.com/a/10162353/157385) и добавить его в строку разметки. Я не знаю, но это возможно. –
Я считаю, что document.documentElement.outerHTML
должен вернуть это для вас.
Согласно MDN, outerHTML
поддерживается в Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile и Safari Mobile. outerHTML
находится в спецификации DOM Parsing and Serialization.
Страница MSDN на outerHTML
property отмечает, что поддерживается в IE 5+. Ответ Колина ссылается на страницу Quikksmode W3C, которая предлагает хорошее сравнение совместимости между браузерами (для других функций DOM тоже).
Not все браузеры поддерживают это. –
@Colin: Да, хорошая точка. По опыту, я, похоже, помню, что оба IE 6+ и Firefox поддерживают его, хотя связанная с вами страница quirksmode предлагает иначе ... – Noldorin
Firefox не поддерживает OuterHTML. Это собственность IE. https://developer.mozilla.org/En/Migrate_apps_from_Internet_Explorer_to_Mozilla#Generate_and_manipulate_content –
document.documentElement.outerHTML
Не все браузеры поддерживают это. –
Поддерживается в Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile и Safari Mobile ([MDN] (https://developer.mozilla.org/ru/документы-американские/DOM/element.outerHTML)). 'outerHTML' находится в спецификации [DOM Parsing and Serialization] (http://domparsing.spec.whatwg.org/#outerhtml). – XP1
Ответ Колина более подробно. –
document.documentElement.innerHTML
Это не возвращает тег ''. –
Правильный путь на самом деле:
webBrowser1.DocumentText
Только если вы размещаете страницу в элементе управления WinForms WebBrowser ... –
Я всегда использую
document.getElementsByTagName('html')[0].innerHTML
Возможно не правильный путь, но я могу понять, когда я это вижу.
Это неверно, потому что он не вернет тег '
Вы также можете сделать:
document.getElementsByTagName('html')[0].innerHTML
Вы не получите Doctype или HTML теги, но все остальное ...
ВОЗМОЖНО ТОЛЬКО IE:
> webBrowser1.DocumentText
для FF вверх от 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));
может работать в FF. (Показывает ОЧЕНЬ ПЕРВЫЙ 300 символов из ОЧЕНЬ начала исходного текста, в основном doctype-defs).
НО следует помнить, что нормальное «Сохранить как» -диалог FF МОЖЕТ НЕ сохранять текущее состояние page, а оригинал полностью загруженный X/h/tml-source-text !! (POST-up из ss в некоторый временный файл и перенаправление на него может доставить сохраненный исходный текст с внесенными в него изменениями/изменениями.)
Хотя FF удивляет хорошим восстановлением на «спине» и NICE включение состояний/значений в «Сохранить (как) ..."для ввода типа ПОЛЕЙ, TextArea и т.д., а не на элементах в contenteditable/DesignMode ...
Если НЕ xhtml- соответственно XML-файла (мим-типа, а не только имя файла-расширение!), можно использовать document.open/write/close для установки содержимого appr. на исходный слой, который будет сохранен в пользовательском диалоговом окне сохранения из меню File/Save FF. см.: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite или
https://developer.mozilla.org/en-US/docs/Web/API/document.write
Нейтральных вопросы X (HT) ML, попробуйте "вид-источник: HTTP: // ..." в качестве значения SRC-Attrib из апа (скрипт сделал !?) iframe, - для доступа к iframes-документу в FF:
<iframe-elementnode>.contentDocument
, см. google "mdn contentDocument" для appr. например, «textContent». «Получил это много лет назад и не хотел лезть на него. Если все еще насущная необходимость, упомянуте об этом, что я добрался до ...
Я попробовал различные ответы, чтобы увидеть, что возвращается. Я использую последнюю версию Chrome.
Предложение document.documentElement.innerHTML;
вернулся <head> ... </body>
предложение Габи document.getElementsByTagName('html')[0].innerHTML;
вернулся тот же.
Предложение document.documentElement.outerHTML;
<html><head> ... </body></html>
которое является всем, кроме «doctype».
Вы можете получить объект DOCTYPE с document.doctype;
Это возвращает объект, а не строка, так что если вам нужно извлечь детали как строки для всех DOCTYPES вплоть до HTML5 описано здесь: Get DocType of an HTML as string with Javascript
I только хотел HTML5, так что следующее было достаточно для меня, чтобы создать весь документ:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
Это самый полный ответ и его следует принять. По состоянию на 2016 год совместимость браузеров завершена, и подробное упоминание о нем (как и в принятом в настоящее время ответе) больше не требуется. –
Использование document.documentElement
.
тот же вопрос ответил здесь: https://stackoverflow.com/a/7289396/2164160
Этот вопрос должен быть закрыт как почти дубликат этого, который намного старше. В любом случае, интересная часть состоит в том, что вам нужен '.outerHTML' и получить' document.doctype', а наиболее полным ответом является [Paolo's] (http://stackoverflow.com/a/26905999/1269037). –
Вы можете сделать
new XMLSerializer().serializeToString(document)
в браузерах новее, чем IE 9.
Это был * первый * ** правильный ответ ** в соответствии с датами/отметками времени. Части страницы, такие как объявление XML, будут * не * включены, а браузеры будут манипулировать кодом при использовании других «ответов». Это сообщение * только *, которое должно быть проголосовано (досье отправлено три дня спустя). Люди должны обратить внимание! – John
Это не совсем правильно, так как serializeToString выполняет кодировку HTML. Например, если ваш код содержит стили, определяющие шрифты, такие как «Times New Roman», Times, serif, кавычки получат html-кодировку. Возможно, это не важно для некоторых из вас, но для меня это ... – Marko
@ Джона хорошо, что OP фактически запрашивает «весь HTML _within_html-теги». И выбранный лучший ответ Колина Бернетта действительно достигает этого. Этот конкретный ответ (Erik's) будет включать теги html и doctype. Тем не менее, это был настоящий бриллиант в грубой для меня и именно то, что я искал! Ваш комментарий тоже помог, потому что он заставлял меня тратить больше времени на этот ответ, так что спасибо :) – evanrmurphy
Единственный правильный ответ: http://stackoverflow.com/questions/ 817218/how-to-get-the-whole-document-html-as-a-string # answer-35917295 (** прекратить голосование по внутреннему/внешнему HTTML-ответам, они НЕ предоставляют весь источник! **) – John