Шрифт:
Имя окна, если оно имеется, хранится в свойстве
name
объекта Window
. Данное свойство доступно для записи, и сценарии могут изменять его по мере необходимости. Если методу Window.open
передать имя (отличное от «_blank»), окно, созданное вызовом этого метода, получит указанное имя, как начальное значение свойства name
. Если элемент <iframe>
имеет атрибут name
, объект Window
, представляющий этот фрейм, будет использовать значение атрибута name
как начальное значение свойства name
. ************************************
Третий необязательный аргумент
ореn
– это список параметров, определяющих размер и видимые элементы графического пользовательского интерфейса нового окна. Если опустить этот аргумент, окно получает размер по умолчанию и полный набор графических элементов: строку меню, строку состояния, панель инструментов и т.д. В броузерах, поддерживающих вкладки, это обычно приводит к созданию новой вкладки. Указав этот аргумент, можно явно определить размер окна и набор имеющихся в нем элементов управления. (Если явно указать размер, в большинстве случаев это приведет к созданию нового окна, а не вкладки.) Например, маленькое окно с изменяемым размером, имеющее строку состояния, но не содержащее меню, панели инструментов и адресную строку, можно открыть посредством следующим образом:
var w = window.open("smallwin.html", "smallwin",
"width=400,height=350,status=yes,resizable=yes");
Этот третий аргумент является нестандартным, и спецификация HTML5 требует, чтобы броузеры игнорировали его. Подробнее о том, какие параметры можно указывать в этом аргументе, рассказывается в описании метода
Window.open
в четвертой части книги. Обратите внимание, что, когда указывается третий аргумент, любые не заданные явно элементы управления отсутствуют. По ряду причин, связанных с проблемами безопасности, броузеры накладывают ограничения на характеристики, которые можно передать методу. Так, например, невозможно открыть слишком маленькое окно или открыть его за пределами видимой области экрана; кроме того, некоторые броузеры не допускают возможности создания окон без строки состояния. Указывать четвертый аргумент
open
имеет смысл, только если второй аргумент определяет имя существующего окна. Этот аргумент - логическое значение, определяющее, должен ли URL-адрес, указанный в первом аргументе, заменить текущую запись в истории просмотра окна (true
) или требуется создать новую запись (false
). Если этот аргумент опущен, используется значение по умолчанию false
. Значение, возвращаемое методом
open,
является объектом Window, представляющим вновь созданное окно. Этот объект позволяет сослаться в JavaScript-коде на новое окно так же, как исходный объект Window
ссылается на окно, в котором выполняется сценарий:
var w = window.open; // Открыть новое пустое окно
w.alert("Будет открыт сайт http://example.com "); // Вызвать его метод alert
w.location = " http://example.com "; // Установить св-во location
В окнах, созданных методом
window.open,
свойство opener
ссылается на объект Window
сценария, открывшего его. В других случаях свойство opener получает значение null
:
w.opener !== null; // Верно для любого окна w, созданного методом open
w.open.opener === w; // Верно для любого окна w
Метод
Window.open
часто используется рекламодателями для создания «всплывающих окон» с рекламой, когда пользователь путешествует по Всемирной паутине. Такие всплывающие окна могут раздражать пользователя, поэтому большинство веб-броузеров реализуют механизм блокирования всплывающих окон. Обычно вызов метода open
преуспевает, только если он производится в ответ на действия пользователя, такие как щелчок мышью на кнопке или на ссылке. Попытка открыть всплывающее окно, которая производится, когда броузер просто загружает (или выгружает) страницу, обычно оканчивается неудачей. Попытка протестировать представленные выше строки программного кода в консоли JavaScript вашего броузера также может окончиться неудачей по тем же причинам. 14.8.1.1. Закрытие окон
Новое окно открывается при помощи метода
open
и закрывается при помощи метода close.
Если объект Window был создан сценарием, то этот же сценарий сможет закрыть его следующей инструкцией:
w.close;
JavaScript-код, выполняющийся внутри данного окна, может закрыть его так:
window.close;