Давайте рассмотрим, что делает браузер, когда он получает html-файл.
Теперь современные браузеры также предоставляют API-интерфейс документа, который позволяет выполнять именно эти задачи с помощью javascript.
Вы можете открыть документ для записи с использованием document.open()
. Вы также можете начать запись контента в документ с помощью document.write()
. Наконец, вы можете закрыть документ для записи с помощью document.close()
. Поскольку документ всегда нужно открыть для записи перед , который вы пишете, вызов document.write()
всегда приводит к неявному document.open()
.
Перехватывает document.write()
вызовы по всему телу html является широко используемым методом, используемым для динамического вставки содержимого строки в html-страницу.
Например, если вы выполняете document.write("<p>holla</p>")
в теле html-файла, браузер получит следующее после получения html-файла.
document.write()
, когда он встретится с ним, а затем напишет "<p>holla</p>"
в эту конкретную строку в документе, точно так же, как если бы строка уже была частью html-файла! Поскольку во время разбора html-файла вызывается document.write()
, он просто анализируется как часть страницы. Если вы используете document.write()
, не было бы неожиданностей. Вместо этого вы вызываете document.write()
после анализа html.
Итак, что, по-вашему, должно произойти?
Как я уже говорил, документ должен быть открыт для записи до того, как он будет записан в . Теоретически мы можем либо добавить существующий контент, либо просто перезаписать его. Ну, если мы добавим к контенту, мы получим недопустимую страницу html, потому что новые значения появятся после закрытия тегов. Поэтому более разумным поведением является переписывание контента, и это именно то, что происходит.