JavaScript метод document.close()

Определение и применение

JavaScript метод .close() объекта document завершает запись в документ (закрывает поток открытый с помощью метода open() объекта document). Данные в поток могут быть переданы с помощью методов write() или writeln() объекта document.

Поддержка браузерами

Спецификация: multipage

Поддерживается во всех основных браузерах с 2020 года.

Показать браузеры
Совместимостьapi.Document.close
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
close✓45

45

1 — Удалено в 45; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓12✓69

69

1 — Удалено в 69; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓51

51

≤12.1 — Удалено в 51; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓11

11

1 — Удалено в 11; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓45

45

18 — Удалено в 45; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓79

79

4 — Удалено в 79; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓47

47

≤12.1 — Удалено в 47; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓11

11

1 — Удалено в 11; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓5.0

5.0

1.0 — Удалено в 5.0; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓45

45

4.4 — Удалено в 45; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

✓11

11

1 — Удалено в 11; Частичная поддержка

Примечание MDN (англ.)

Only supported for HTMLDocument, not all Document objects.

поддерживается с ограничениями нет поддержки нет данных≤31 — не позднее версии 31

JavaScript синтаксис:

JavaScript
document.close()

Спецификация

Document Object Model (DOM) Level 1

Пример использования

HTML
<!DOCTYPE html>
<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
HTML


<button data-migration-click-0="">Нажми меня</button>




main.js
JavaScript
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");

Результат нашего примера:

Пример создания документа в новом окне
Пример создания документа в новом окне