Получение всего HTML контента тега <html> через JS/jQuery

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Вкратце пройдемся по основам:

Чтобы извлечь полную разметку <html>: JavaScript: document.documentElement.outerHTML; jQuery: $('html')[0].outerHTML;

JS
Скопировать код
console.log(document.documentElement.outerHTML); // Это JavaScript в чистом виде
console.log($('html')[0].outerHTML); // А вот и jQuery в работе
Кинга Идем в IT: пошаговый план для смены профессии

Подробное руководство: методы получения и манипулирования элементов HTML

Мы рассмотрим некоторые из способов работы с HTML-элементами, когда важны не только результат, но и сам процесс.

Получение doctype

На самом деле, doctype не очень просто считывать, но в JavaScript есть специальный инструмент для этого:

JS
Скопировать код
const doctype = new XMLSerializer().serializeToString(document.doctype); 
console.log(doctype); // выводит "<!DOCTYPE html>" или ваш текущий doctype

Получение атрибутов тега <html>

Вы можете извлечь атрибуты тега <html> следующими способами:

JavaScript:

JS
Скопировать код
// Element.getAttribute(): это метод, который существует с самого начала
const langAttr = document.documentElement.getAttribute('lang');
console.log(langAttr); // будет выведен 'en' или язык вашего сайта

jQuery:

JS
Скопировать код
// .attr() в jQuery: добрый старый подход
const langAttrJQuery = $('html').attr('lang');
console.log(langAttrJQuery); // получим тот же результат, но уже с использованием jQuery

Изменение атрибутов тега <html> — сложное дело

Менять атрибуты можно, но учтите возможные последствия:

JavaScript:

JS
Скопировать код
// JavaScript поможет сделать все на испанском
document.documentElement.setAttribute('lang', 'es');

jQuery:

JS
Скопировать код
// jQuery с радостью переведет `<html>` на испанский язык
$('html').attr('lang', 'es');

Визуализация

Возьмем для наглядности полный тег <html>:

Markdown
Скопировать код
HTML-тег = **Целый веб-сайт** 🏞️

До: [🌳 <body> Лес </body> 🌳]
Действие: JavaScript делает снимок всего сайта 📸
После: [🖼 <html> 🌳 <body> Лес </body> 🌳 </html>]

Чтобы получить полный HTML-документ, используйте document.documentElement.outerHTML:

JS
Скопировать код
let htmlContent = document.documentElement.outerHTML; // Загляните под кромку тега – вот и все!

Дополнительно: Альтернативные методы и хитрости

У JavaScript есть инструменты для решения всех видов задач, как у многофункционального ножа. Рассмотрим некоторые из них:

Мастерские способы обращения к HTML

JavaScript предлагает целый арсенал методов, чтобы вытащить тег html:

JS
Скопировать код
// Получаем тег html. Как будто джин вылез из бутылки
document.getElementsByTagName("html")[0]; 
document.querySelector("html"); 
document.body.parentNode; // Или просто попросите у body родителя. Он знает

Вопрос скорости: JavaScript против jQuery

Пока JavaScript быстр и подвижен как заяц, jQuery тихий и спокойный как черепаха. Но в программировании заяц обычно выигрывает:

JS
Скопировать код
// JavaScript быстро стартует и делает работу
let htmlElement = document.documentElement;
// jQuery передвигается медленнее, но и он в итоге достигает своей цели
let htmlElementJQuery = $('html')[0];

Расширение функционала с помощью плагинов

С помощью плагинов jQuery вы можете стать истинным мастером. Знакомы с getAttributes? Он достает все атрибуты элемента:

JS
Скопировать код
$('#element').getAttributes(); // Спрашиваем у джина о его возможностях

Полезные материалы

  1. Документация Web API: documentElement – MDN
  2. .html() | Документация jQuery API
  3. 'innerText' в IE и проблемы в Firefox – Stack Overflow
  4. HTML DOM в JavaScript
  5. Web API: innerHTML – MDN
  6. Эффективное клонирование объектов в JavaScript – Stack Overflow
  7. Изменение документа – учебник по JavaScript