- document: write() method
- Syntax
- Parameters
- Return value
- Examples
- Out with the old, in with the new!
- Notes
- Main title
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- JavaScript Output
- Example
- My First Web Page
- Using document.write()
- Example
- My First Web Page
- Example
- My First Web Page
- Using window.alert()
- Example
- My First Web Page
- Example
- My First Web Page
- Using console.log()
- Example
- JavaScript Print
- Example
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- Всё только о JavaScript
- Как работает document.write
- Вывод скриптов
- Примеры ошибочного использования
- Область применения
- Генерация нового документа
- Вывод динамического содержимого на этапе загрузки
- Информеры для внешних сайтов
document: write() method
Warning: Use of the document.write() method is strongly discouraged.
The document.write() method writes a string of text to a document stream opened by document.open() .
Note: Because document.write() writes to the document stream, calling document.write() on a closed (loaded) document automatically calls document.open() , which will clear the document.
Syntax
Parameters
A string containing the text to be written to the document.
Return value
Examples
html lang="en"> head> title>Write exampletitle> script> function newContent() document.open(); document.write("Out with the old, in with the new!
"); document.close(); > script> head> body onload="newContent();"> p>Some original document content.p> body> html>
Notes
The text you write is parsed into the document’s structure model. In the example above, the h1 element becomes a node in the document.
Writing to a document that has already loaded without calling document.open() will automatically call document.open() . After writing, call document.close() to tell the browser to finish loading the page.
If the document.write() call is embedded within an inline HTML tag, then it will not call document.open() . For example:
script> document.write("Main title
"); script>
Note: document.write() and document.writeln do not work in XHTML documents (you’ll get an «Operation is not supported» [ NS_ERROR_DOM_NOT_SUPPORTED_ERR ] error in the error console). This happens when opening a local file with the .xhtml file extension or for any document served with an application/xhtml+xml MIME type. More information is available in the W3C XHTML FAQ.
Note: Using document.write() in deferred or asynchronous scripts will be ignored and you’ll get a message like «A call to document.write() from an asynchronously-loaded external script was ignored» in the error console.
Note: In Edge only, calling document.write() more than once in an causes the error «SCRIPT70: Permission denied».
Note: Starting with version 55, Chrome will not execute elements injected via document.write() when specific conditions are met. For more information, refer to Intervening against document.write().
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Apr 7, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
JavaScript Output
To access an HTML element, JavaScript can use the document.getElementById(id) method.
The id attribute defines the HTML element. The innerHTML property defines the HTML content:
Example
My First Web Page
My First Paragraph
document.getElementById(«demo»).innerHTML = 5 + 6;
Changing the innerHTML property of an HTML element is a common way to display data in HTML.
Using document.write()
For testing purposes, it is convenient to use document.write() :
Example
My First Web Page
My first paragraph.
Using document.write() after an HTML document is loaded, will delete all existing HTML:
Example
My First Web Page
My first paragraph.
The document.write() method should only be used for testing.
Using window.alert()
You can use an alert box to display data:
Example
My First Web Page
My first paragraph.
You can skip the window keyword.
In JavaScript, the window object is the global scope object. This means that variables, properties, and methods by default belong to the window object. This also means that specifying the window keyword is optional:
Example
My First Web Page
My first paragraph.
Using console.log()
For debugging purposes, you can call the console.log() method in the browser to display data.
You will learn more about debugging in a later chapter.
Example
JavaScript Print
JavaScript does not have any print object or print methods.
You cannot access output devices from JavaScript.
The only exception is that you can call the window.print() method in the browser to print the content of the current window.
Example
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.
Всё только о JavaScript
document.write(arg1[, arg2[, arg3[, . ]]]) — метод, выводящий на страницу переданные ему аргументы. Аргументов может быть любое количество, и они могут быть любых типов, при выводе они преобразуются в строки.
Также существует функция document.writeln , которая аналогична document.write , но добавляет в конце своего вывода перевод строки.
Как работает document.write
document.write выводит свои аргументы после того тега script , в котором он был вызван. К примеру код
Обратите внимание: не после того тега script , в котором записано выражение document.write , а после того, в котором оно было вызвано. Следующий код
document.write работает только на этапе загрузки страницы, его нельзя вызывать в ответ на какое-нибудь событие. Если document.write вызвать после того, как страница загрузилась, результат во всех браузерах будет примерно одинаков — пустая страница и, возможно, тот текст, который был выведен последним document.write . Поэтому даже не пытайтесь использовать его в ответ на какие-то действия пользователя, только на этапе загрузки страницы.
Вывод скриптов
Как и любое другое содержимое, document.write может выводить и скрипты, которые тоже в свою очередь могут содержать document.write . Но нужно помнить: внедрённые в HTML скрипты не могут содержать внутри себя в явном виде строку . Нужно или разорвать этот тег на части ‘‘ , или заменить какой-нибудь символ на escape-последовательность . В скриптах, содержащихся во внешних файлах, такие манипуляции не требуются.
Если вложенные скрипты тоже, в свою очередь, содержат document.write , то всё будет выведено последовательно.
Результат на странице будет
Создаём первый скрипт.
Первый скрипт
Создаём второй скрипт.
Второй скрипт
Закончили.
Однако такая последовательность сохраняется до тех пор, пока мы не решим подключить внешние скрипты, выводящие текст на страницу. Создадим, например, файл test1.js с содержимым
document.write('Содержимое test1.js
');
И файл test2.js с содержимым
document.write('Содержимое test2.js
');
Тогда результат работы скриптов на следующей странице будет различаться в различных браузерах.
В Firefox и Safari выведется ожидаемое
Подключаем test1.js
Содержимое test1.js
Подключаем test2.js
Содержимое test2.js
Закончили подключать
А вот Opera, Chrome и Internet Explorer поведут себя в какой-то мере логично, но не последовательно.
Подключаем test1.js
Подключаем test2.js
Закончили подключать
Содержимое test1.js
Содержимое test2.js
Другими словами, если Firefox и Safari обрабатывают появляющиеся скрипты последовательно, независимо от того, внешние они или внедрёные, то Opera, Chrome и IE выполняют внешние созданные динамически скрипты только после того, как выполнится текущий блок .
Поэтому, если вы кроссбраузерно хотите динамически подключить внешний скрипт и выполнить какие-нибудь действия после того, как он отработает, то эти действия необходимо также выносить во внешний файл.
Разный результат в разных браузерах:
Одинаковый результат во всех браузерах:
document.write('Закончили подключать
');
Примеры ошибочного использования
Как было сказано выше, document.write выводит текст только во время загрузки страницы. В этом и заключается основная ошибка многих начинающих JavaScript-программистов — они пытаются использовать document.write в ответ на пользовательские события, например, onclick , в результате чего получают пустую страницу.
Запомните, если вы хотите изменить содержимое блока, то нужно найти этот блок в DOM-дереве, например, по его идентификатору, и изменить у него свойство innerHTML .
document.getElementById('content').innerHTML = 'Новое содержимое';
Область применения
Области применения у document.write две: создать новый документ с нуля и сгенерировать динамический контент в том самом месте, где находится родительский элемент script . Всё остальное вариации этих двух случаев.
Генерация нового документа
Если нужно открыть новое окно или создать новый фрейм, содержимое которых не загружается с какого-то урла, а должно генерироваться динамически, то самый простой способ — это написать содержимое нового документа с помощью document.write .
var w = window.open(); w.document.open(); // Открываем документ для записи w.document.writeln(''); w.document.write(' Это динамическое окно.'); w.document.close(); // Заканчиваем формирование документа
Обратите внимание на вызов метода close , пока он не вызван, браузер считает, что документ ещё не до конца загружен, и не убирает индикатор загрузки.
Вывод динамического содержимого на этапе загрузки
Под таким сложным заголовком скрывается простая вещь. Предположим мы хотим выводить на странице текущий день недели. Тогда в то место, где он должен находиться, нужно вставить следующий код.
Сегодня .
Несмотря на предрассудки по отношению к document.write , это самый простой способ, в отличие от DOM-методов, и в подобных случаях он более чем уместен.
Информеры для внешних сайтов
Ещё одна область применения для document.write — предоставление кодов сторонним сайтам для вывода различных виджетов, информеров, банеров, контекстных объявлений и прочих подобных вещей. Смысл здесь в том, чтобы предоставить неискушённому пользователю код, который он сможет без лишних движений поставить в то место, где должен появляться соответствующий блок. Тогда пользователю выдаётся простой код в виде тега script и, возможно, инициализации каких-то параметров.
А в этот скрипт уже выдаётся код, который создаёт нужный html-код.