Как получить весь документ HTML в виде строки?



есть ли способ в JS получить весь HTML в пределах html теги, как строку?



document.documentElement.??
1235   12  

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 тоже).

можно сделать

new XMLSerializer().serializeToString(document)

в браузерах новее IE 9.

я попробовал различные ответы, чтобы увидеть, что возвращается. Я использую последнюю версию 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, но все остальное...

document.documentElement.outerHTML

НАВЕРНОЕ ТОЛЬКО 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.documentElement.innerHTML

Я всегда использую

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 на НПМ.

правильный путь на самом деле:

метода webbrowser1.Выберитетекст документа

Comments

    Ничего не найдено.