12 ответов:
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 разбор и сериализация спецификация.посмотреть quirksmode для совместимости браузера для того, что будет работать для вас. Всяческая поддержка
innerHTML.var markup = document.documentElement.innerHTML; alert(markup);
Я считаю
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 разбор и сериализация.страница MSDN на
outerHTMLсвойства отмечает, что он поддерживается в IE 5+. Ответ Колина ссылается на W3C страница quirksmode, которая предлагает хорошее сравнение кросс-браузерной совместимости (для других функций DOM тоже).
я попробовал различные ответы, чтобы увидеть, что возвращается. Я использую последнюю версию Chrome.
предложение
document.documentElement.innerHTML;вернулся<head> ... </body>Габи предложение
document.getElementsByTagName('html')[0].innerHTML;возвратил то же самое.предложение
document.documentElement.outerHTML;вернулся<html><head> ... </body></html>в которой есть все, кроме 'установлен'.вы можете получить объект doctype с помощью
document.doctype;Это возвращает объект, а не строку, так что если вам нужно, чтобы извлечь данные в виде строк для все doctypes до и включая HTML5 описано здесь:получить DocType HTML в виде строки с JavascriptЯ хотел только HTML5, поэтому мне было достаточно следующего, чтобы создать весь документ:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
вы также можете сделать:
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 может не сохранить текущее состояние страницы, а первоначально загруженный X/h/tml-исходный текст !! (пост-ап ss к некоторому temp-файлу и перенаправление на него может доставить сохраняемый исходный текст с помощью изменения / правки, внесенные до этого.)
хотя FF удивляет хорошим восстановлением на " спине "и приятным включением состояний/значений на" Save (as) ..."для полей типа ввода textarea etc. , а не на элементах в contenteditable/ designMode...
Если не xhtml-респ. xml-файл (MIME-тип, а не только расширение имени файла!), можно использовать документ.откройте / запись / закрыть, чтобы установить приложение. содержимое исходного слоя, которое будет сохранено в диалоговом окне сохранения пользователя из Файл / Сохранить меню FF. видеть: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite ОТВ.
https://developer.mozilla.org/en-US/docs/Web/API/document.write
нейтральный к вопросам X (ht)ML, попробуйте "view-source:http://..."в качестве значения КГД-свойства объекта (скрипт-сделал!?) iframe, - для доступа к iframes-документу в FF:
<iframe-elementnode>.contentDocument, см. google "mdn contentDocument" для appr. члены, как текстового содержимого', например. - Получил это много лет назад и не хотел ползти за ним. Если все еще есть срочная необходимость, упомяните это ,что я должен погрузиться...
Я всегда использую
document.getElementsByTagName('html')[0].innerHTMLнаверное не правильно, но я могу понять это, когда я вижу его.
использовать
document.documentElement.тот же вопрос ответил Здесь: https://stackoverflow.com/a/7289396/2164160
получить вещи за пределами
<html>...</html>главное<!DOCTYPE ...>ДЕКЛАРАЦИЯ, Вы можете пройти через документ.childNodes, превращая каждый в строку:const html = [...document.childNodes] .map(node => nodeToString(node)) .join('\n') // could use '' instead, but whitespace should not matter. function nodeToString(node) { switch (node.nodeType) { case node.ELEMENT_NODE: return node.outerHTML case node.TEXT_NODE: // Text nodes should probably never be encountered, but handling them anyway. return node.textContent case node.COMMENT_NODE: return `<!--${node.textContent}-->` case node.DOCUMENT_TYPE_NODE: return doctypeToString(node) default: throw new TypeError(`Unexpected node type: ${node.nodeType}`) } }я опубликовал этот код документ-outerhtml на НПМ.
Comments