Открывать новые окна броузера можно методом open() объекта Window.
С помощью метода window.open() создаются всплывающие окна, содержащие рекламу, когда пользователь путешествует по Всемирной паутине. Из_за подоб_ ных злоупотреблений в большинстве веб_броузеров появились разнообразные системы блокирования всплывающих окон. Обычно вызов метода open() приво_ дит к открытию нового окна1, если это действие инициировано самим пользова_ телем, например щелчком мыши на кнопке или ссылке. JavaScript_сценарий, который попытается открыть новое окно при первой загрузке (или выгрузке) страницы, наверняка потерпит неудачу.
Метод open() принимает четыре необязательных аргумента и возвращает объект Window, представляющий только что открытое окно. Первый аргумент open() – это URL_адрес документа, отображаемого в новом окне. Если этот аргумент от_ сутствует (либо равен null или пустой строке), окно будет пустым.
Второй аргумент open() – это имя окна. Как показано далее в данной главе, это имя может использоваться в качестве значения атрибута target тега <form> или <a>. Если указать имя уже существующего окна, open() просто вернет ссылку на существующее окно, не открывая нового.
1 Или на выбор новой «вкладки» главного окна броузера, как это названо в Mozilla Firefox. – Примеч. науч. ред.
298 Глава 14. Работа с окнами броузера
Третий необязательный аргумент open() – это список параметров, задающих раз_ мер и элементы графического пользовательского интерфейса окна. Если опус_ тить этот аргумент, окно получает размер по умолчанию и полный набор графи_ ческих элементов, включая меню, строку состояния, панель инструментов и т. д. Указав этот аргумент, можно явно задать размер окна и набор имеющихся в нем элементов управления. Например, маленькое окно с изменяемым размером, имеющее строку состояния, но не содержащее меню, панели инструментов и ад_ ресную строку, можно открыть посредством следующей строки JavaScript_кода:
var w = window.open("smallwin.html", "smallwin", "width=400,height=350,status=yes,resizable=yes");
Обратите внимание: когда указывается третий аргумент, любые явно не задан_ ные элементы управления отсутствуют. Полный набор доступных элементов и их имен приведен в описании метода Window.open() в четвертой части книги. По ряду причин, связанных с проблемами безопасности, броузеры накладывают ог_ раничения на характеристики, которые можно передать методу. Так, например, невозможно открыть слишком маленькое окно или открыть его за пределами ви_ димой области экрана; кроме того, некоторые броузеры не допускают возможно_ сти создания окон без строки состояния. Чем больше способов обмана пользова_ телей придумают спамеры, мошенники и другие жители темной стороны Все_ мирной паутины, тем больше ограничений будет накладываться на метод open().
Указывать четвертый аргумент open() имеет смысл, только если второй аргу_ мент представляет собой имя существующего окна. Этот аргумент – логическое значение, определяющее, должен ли URL_адрес, указанный в первом аргументе, заменить текущую запись в истории просмотра окна (true) или требуется создать новую запись (false). Последний вариант выбирается по умолчанию.
Возвращаемое методом open() значение является объектом Window, представляю_ щим только что созданное окно. Этот объект в JavaScript_коде позволяет со_ слаться на новое окно так же, как исходный объект Window ссылается на окно, в котором работает ваш код. А как насчет обратной ситуации? Что если Java_ Script_код в новом окне захочет обращаться к открывшему его окну? Свойство opener объекта Window ссылается на окно, из которого было открыто текущее ок_ но. Если окно было создано пользователем, а не JavaScript_сценарием, значение свойства opener равно null.