Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Зачем нужен document.close? (https://javascript.ru/forum/misc/7967-zachem-nuzhen-document-close.html)

возжаждавший 01.03.2010 01:09

Зачем нужен document.close?
 
Ребята, объясните, пожалуйста!
Здесь прочёл:
http://www.spravkaweb.ru/javascript/...ocument/method
"Заставляет Web-страницу немедленно обновить свое содержимое после использования методов write. Метод не принимает параметров и не возвращает значения."

...Собсно уже возник вопрос. Это как понять? document.write сам по себе пишет нечто в документ, обновляет то есть. Зачем ещё document.close добавлять? Чтобы опять обновил? Непонятно.

ПОтом я прочёл у Гудмана и Мориссона вот что:
"ПОсле почледнего вызова document.write() в сценарии следует использовать метод"document.close() В противном случае может оказаться, что изображения и формы не будут отображаться."

Ну эти детали далеки от меня, но мне хотеллось бы просто понять: вот ОБНОВИЛИ мы всё-таки документ с помощью document.write.. Получается, что document.close (close это закрывать значит) мы пишем, что бы на страницу ничего левого и ненужного не лезло. И вот тут стоп!

Ведь рекомендуется писать document.close именно после ПОСЛЕДНЕГО document.write! Но, ребята, если это последний вызов, следовательно, на страницу и так ничего не полезет... Извините...

Octane 01.03.2010 01:20

Ну document.write открывает поток и браузер ждет, может еще что-то надо дописать, иначе, если бы он (write) каждый раз после себя закрывал поток, каждый вызов document.write перезаписывал бы весь документ, а так мы увидим "12" в обоих случаях:

var win = window.open();
win.document.open();
win.document.write("1");
win.document.write("2");
win.document.close();


var win = window.open();
win.document.write("1");
win.document.write("2");


но обрати внимание, что во втором примере браузер так и ждет окончания загрузки документа (тестил в Firefox 3.6, IE8).

--------
в Chrome 2-й пример почему-то не работает вообще, в Opera 10.50 индикатор загрузки не отображается.

возжаждавший 01.03.2010 01:35

Ну да, то есть я увидел, что в первом случае всё быстренько записалось и загрузка окончилась. Предсказуемое поведение. А во втором случае записалось, но загрузка продолжалась.
...А почему она продолжалась?

Ну пусть у нас нет document.close
Но разве отсутствие document.write (вотрой случай- всего два document.write) не интерпретируется браузером как сигнал к НЕМЕДЛЕННОМУ окончанию загрузки?

Octane 01.03.2010 01:54

Цитата:

Сообщение от возжаждавший
А почему она продолжалась?

Не знаю, так сделали) Возможно, этому найдется какое-то применение.

возжаждавший 01.03.2010 02:04

Странно это.
Так чему грузиться-то?
Я так понимаю, загрузка продолжается, пока интерпретатор интерпретирует document.write

Но их больше нет ведь! Какой-то непонятный запас времени создаётся неясно для чего.

Octane 01.03.2010 02:14

var win = window.open(), i = 0;
win.document.write(i);
win.document.onkeydown = function () {
    win.document.write(++i);
};

Документ обрабатываться по мере загрузки, а не целиком


Часовой пояс GMT +3, время: 18:18.