страница 153
В листинге 8.3 ситуация несколько сложнее, поскольку сценарий создает подокно, в которое записывается целый документ, сгенерированный сценарием. Чтобы ссылка на новое окно была доступна для всех функций, переменную newWindow объявляют как глобальную. Сразу после загрузки страницы, обработчик события onload вызывает функцию makeNewWindow(). Эта функция создает пустое подокно. Третьему параметру метода window.open() добавлено свойство, которое дает инструкцию строке состояния подокна на отображение данных.
Кнопка на странице используется для вызова метода subWrite. Первым заданием, которое он выполняет, является проверка свойства closed подокна. Это свойство (которое введено только в последних версиях браузеров) возвращает значение true, если окно, на которое сделана ссылка, закрыто. Если это так (пользователь самостоятельно закрыл окно), то будет вызвана функция makeNewWindow() и окно будет снова открыто.
При открытом окне в виде строчной переменной вызывается новое содержимое. Как и в листинге 8.2, содержимое записывается в один подход (хотя это и не является обязательным для отдельного окна), после чего сразу вызывается метод close(). Обратите внимание на важную, особенность: как в методе write(), так и в методе close() подокно задается в явном виде.
<html> <head> <title>Writing to Subwindow</title> <script type="text/javascript"> var newWindow; function makeNewWindow() { newWindow = window.open("","","status,height=200,width=300"); } function subWrite() { //Создается новое окно в том случае, если кто-то его закрыл if (newWindow.closed) { makeNewWindow(); } //Выведение окна на передний план newWindow.focus(); //Вызов содержимого для нового окна var newContent = "<html><head><title>A New Doc</tile></head>"; newContent += "<body bgcolor=' coral'><h1>This document is brand new.</h1>"; newContent += "</body></html>"; //Запись HTML в новый документ окна newWindow.document.write(newContent); newWindow.document.close(); //Закрытие потока } </script> </head> <body onload="makeNewWindow()"> <form> <input type="button" value="Write to Subwindow" onclick="subWrite()"> </form> </body> </html>
Листинг 8.3. Использование метода dociunent.write() с другим окном