JavaScript метод document.close()
Определение и применение
JavaScript метод .close() объекта document завершает запись в документ (закрывает поток открытый с помощью метода open() объекта document). Данные в поток могут быть переданы с помощью методов write() или writeln() объекта document.
Поддержка браузерами
Спецификация: multipage
Поддерживается во всех основных браузерах с 2020 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
close | 45 45 1 — Удалено в 45; Частичная поддержка Примечание MDN (англ.) Only supported for | 12 | 69 69 1 — Удалено в 69; Частичная поддержка Примечание MDN (англ.) Only supported for | 51 51 ≤12.1 — Удалено в 51; Частичная поддержка Примечание MDN (англ.) Only supported for | 11 11 1 — Удалено в 11; Частичная поддержка Примечание MDN (англ.) Only supported for | 45 45 18 — Удалено в 45; Частичная поддержка Примечание MDN (англ.) Only supported for | 79 79 4 — Удалено в 79; Частичная поддержка Примечание MDN (англ.) Only supported for | 47 47 ≤12.1 — Удалено в 47; Частичная поддержка Примечание MDN (англ.) Only supported for | 11 11 1 — Удалено в 11; Частичная поддержка Примечание MDN (англ.) Only supported for | 5.0 5.0 1.0 — Удалено в 5.0; Частичная поддержка Примечание MDN (англ.) Only supported for | 45 45 4.4 — Удалено в 45; Частичная поддержка Примечание MDN (англ.) Only supported for | 11 11 1 — Удалено в 11; Частичная поддержка Примечание MDN (англ.) Only supported for |
поддерживается с ограничениями нет поддержки нет данных≤31 — не позднее версии 31
JavaScript синтаксис:
document.close()
Спецификация
Document Object Model (DOM) Level 1Пример использования
<html>
<head>
<title>Пример создания документа в новом окне</title>
</head>
<body>
<button onclick="myFunc()">Нажми меня</button>
<!-- добавляем атрибут событий onclick -->
<script>
function myFunc() {
let newWindow = window.open(), // метод позволяет открыть новое окно браузера
newWindowDocument = newWindow.document; // ссылаемся на объект document в новом открытом окне
// открываем поток для записи документа
newWindowDocument.open("text/html", "replace");
// используем метод write
newWindowDocument.write("<html><head><title>My document</title></head><body>");
newWindowDocument.write("<h1>Hello</h1>");
newWindowDocument.write("<pre>");
newWindowDocument.write("1");
newWindowDocument.write("2");
newWindowDocument.write("3<br>");
// используем метод writeln
newWindowDocument.writeln("1");
newWindowDocument.writeln("2");
newWindowDocument.writeln("3");
// используем метод write
newWindowDocument.write("</pre>");
newWindowDocument.write("</body></html>");
// закрываем поток
newWindowDocument.close();
}
</script>
</body>
</html>
В этом примере с использованием атрибута событий onclick при нажатии на кнопку (HTML элемент <button>) вызываем функцию myFunc(), которая с использованием JavaScript метода .open() объекта window открывает новое окно браузера, а с помощью метода open() объекта document открывает поток для записи этого документа. В этот документ с помощью методов write() и writeln() записываем в поток необходимые строки текста.
Основное отличие методов write() и writeln() заключается в том, что метод writeln() дополнительно добавляет символ новой строки. Это полезно, например, при работе с HTML элементом <pre>, который сохраняет как пробелы, так и разрывы строк.
После того как мы записали в документ необходимое текстовое содержимое, мы с помощью метода .close() объекта document закрываем поток открытый с помощью метода open() объекта document.
Обратите внимание, что мы дополнительно передали в метод open() объекта document два аргумента, первый определяет тип документа ("text/html" - HTML документ по умолчанию), а второй аргумент соответствует значению "replace", которое указывает, что пользователь, если перейдет в открытом окне на новую страницу не сможет обратно на неё вернуться (кнопка браузера "назад" будет не активна).
Пример создания документа в новом окне
Исходный код для изучения. Запуск на этой странице недоступен.
index.html
<button data-migration-click-0="">Нажми меня</button>
main.js
function myFunc() {
let newWindow = window.open(),
newWindowDocument = newWindow.document;
newWindowDocument.open("text/html", "replace");
newWindowDocument.write("<html><head><title>My document</title></head><body>");
newWindowDocument.write("<h1>Hello</h1>");
newWindowDocument.write("<pre>");
newWindowDocument.write("1");
newWindowDocument.write("2");
newWindowDocument.write("3<br>");
newWindowDocument.writeln("1");
newWindowDocument.writeln("2");
newWindowDocument.writeln("3");
newWindowDocument.write("</pre>");
newWindowDocument.write("</body></html>");
newWindowDocument.close();
}
// Обработчики кнопок перенесены из HTML для запуска с CSP без inline-скриптов.
document.querySelector("[data-migration-click-0]").addEventListener("click", function () {
myFunc();
});
document.querySelector("[data-migration-click-0]").removeAttribute("data-migration-click-0");
Результат нашего примера: