Як отримати <html> тег HTML за допомогою JavaScript / jQuery?


161

Використання $('html').html()я можу отримати HTML всередині <html>тега ( <head>, <body>і т.д.). Але як я можу отримати власне HTML <html>тегу (з атрибутами)?

Крім того, чи можна отримати весь HTML сторінки (включаючи doctype <html>тощо) за допомогою jQuery (або звичайного старого JavaScript)?

Відповіді:


305

Найпростіший спосіб отримати htmlелемент спочатку:

document.documentElement

Ось посилання: https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement .

ОНОВЛЕННЯ: Щоб потім схопити htmlелемент як рядок, який ви зробите:

document.documentElement.outerHTML

1
Дивіться також це питання для отримання додаткової інформації про documentElementсумісність браузера: stackoverflow.com/q/11391827/177710 .
Олівер

Як часто ви отримуєте посилання на елемент html !? Я не думаю, що ефективність роботи взагалі повинна викликати занепокоєння. У будь-якому випадку, це насправді краща відповідь, але це прийшло НАЙЧАСНО після нагороди.
лабораторія

42

Ось як отримати html-елемент DOM виключно за допомогою JS:

var htmlElement = document.getElementsByTagName("html")[0];

або

var htmlElement = document.querySelector("html");

І якщо ви хочете використовувати jQuery, щоб отримати атрибути з нього ...

$(htmlElement).attr(INSERT-ATTRIBUTE-NAME);

Ваша відповідь була б значно кращою, якби ви могли пояснити, чому це відповіло на питання. Також, будь ласка, виділіть код і натисніть {}кнопку або натисніть ctrl + k, щоб позначити його як код.
Бен

18

Окрім деяких інших відповідей, ви також можете отримати доступ до елемента HTML за допомогою:

var htmlEl = document.body.parentNode;

Тоді ви можете отримати внутрішній вміст HTML:

var inner = htmlEl.innerHTML;

Таким чином, здається, це незначно швидше . Якщо ви просто отримуєте HTML-елемент, document.body.parentNodeздається, це зовсім трохи швидше .

Після того, як у вас є елемент HTML, ви можете возитися з атрибутами з методами getAttributeта setAttribute.

Для DOCTYPE ви можете використовувати document.doctype, про що було розроблено в цьому запитанні .


4
Як зауваження: це не вдасться, якщо тіло ще не доступне в документі.
DataDink

3
У такому випадку document.head.parentNodeвсе одно буде працювати, якщо є головний елемент.
mahemoff

15

У jQuery:

var html_string = $('html').outerHTML()

У простому Javascript:

var html_string = document.documentElement.outerHTML

4

якщо ви хочете отримати атрибут HTML-елемента за допомогою jQuery, який ви можете використовувати .attr();

так $('html').attr('someAttribute');ви отримаєте значення someAttributeелементаhtml

http://api.jquery.com/attr/

Додатково:

тут є плагін jQuery: http://plugins.jquery.com/project/getAttributes

що дозволяє отримати всі атрибути з елемента HTML


1
Проект getAttributes () вже трохи старий (лютий 2009 р.).
gligoran
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.