Машина выполнения JavaScript создаёт объект window для каждого тэга
BODY или FRAMESET. Она также создаёт объект window
для представления каждого фрэйма, определённого тэгом FRAME. Кроме
того, Вы можете создать другие окна, вызывая метод window.open.
Детали определения окна см. в разделе open.
В JavaScript 1.1, на некоторых платформах, размещение обработчика onBlur
или onFocus в тэге FRAMESET не даёт эффекта.
Описание
Объект window это объект верхнего уровня в клиентской иерархии JavaScript.
Объект window может представлять окно верхнего уровня или фрэйм из
набора фрэймов. Для удобства Вы можете представлять объект Frame
как объект window, который не является окном верхнего уровня.
Однако в действительности не существует отдельный класс Frame; эти
объекты в действительности являются объектами window с очень небольшими отличиями:
Для окна верхнего уровня свойства parent и
top
являются ссылками на само это окно. Для фрэйма - top
ссылается на самое верхнее окно браузера, а parent
ссылается на родительское окно текущего окна.
Для окна верхнего уровня установка свойства defaultStatus
или status устанавливает текст status-строки
браузера. Для фрэйма установка этих свойств устанавливает только текст
статусной строки, когда курсор находится над фрэймом.
Метод close не используется для окон,
которые являются фрэймами.
Для создания обработчика onBlur или onFocus для
фрэйма Вы обязаны установить свойство onblur или onfocus
и специфицировать его в нижнем регистре (нельзя специфицировать его в HTML).
Если тэг FRAME содержит атрибуты SRC и NAME,
Вы можете обратиться к этому фрэйму из фрэйма-родственника через parent.frameName
или parent.frames[index]. Например, если четвёртый фрэйм из
набора фрэймов имеет атрибут NAME="homeFrame",
фрэймы-родственники могут обратиться к этому фрэйму parent.homeFrame
или
parent.frames[3].
Для всех окон свойства self и window объекта window
являются синонимами текущего окна, и Вы можете по выбору использовать их для
обращения к текущему окну. Например, можно закрыть текущее окно, вызвав метод close
в window или в self. Вы можете использовать эти
свойства, чтобы сделать Ваш код более читабельным или чтобы отличить ссылку self.status от status.
См. далее примеры для свойств и методов.
Поскольку принимается существование текущего окна, Вы не должны обращаться к
имени окна при вызове его методов и присвоении значений свойств. Например,
status="Jump to a new location"
это верное присвоение свойства, а close() это верный вызов метода.
Однако, если Вы открываете или закрываете окно обработчиком события, Вы обязаны
специфицировать window.open() или window.close()
вместо open() или close(). Из-за видимости static-объектов
в JavaScript, вызов close() без указания имени объекта эквивалентен document.close().
По некоторым причинам, если Вы обращаетесь к объекту location в
обработчике события, Вы обязаны специфицировать window.location
вместо location. Вызов location без специфицирования
имени объекта эквивалентен document.location, что является
синонимом document.URL.
Вы можете обратиться к объектам Frame окна в коде через
использование массива frames. В окне с тэгом FRAMESET
массив frames содержит вхождение для каждого фрэйма.
Окну нужны обработчики событий, пока HTML, который содержит тэг BODY
или FRAMESET, не будет загружен в него.
Пример 1. Окна, открывающие другие окна. Здесь документ верхнего окна
открывает второе окно window2 и определяет push-кнопки, которые
открывают окно с сообщением, записывает в окно сообщения, закрывает его и закрывает window2.
Обработчики onLoad и onUnload документа, загруженного
в window2, выводят предупреждающие сообщения при открытии и закрытии окна.
win1.html, который определяет фрэймы для первого окна,
содержит следующий код:
<HTML> <HEAD> <TITLE>window object example: Window 1</TITLE> </HEAD> <BODY BGCOLOR="antiquewhite"> <SCRIPT> window2=open("win2.html","secondWindow", "scrollbars=yes,width=250, height=400") document.writeln("<B>The first window has no name: " + window.name + "</B>") document.writeln("<BR><B>The second window is named: " + window2.name + "</B>") </SCRIPT> <FORM NAME="form1"> <P><INPUT TYPE="button" VALUE="Open a message window" onClick = "window3=window.open('','messageWindow', 'scrollbars=yes,width=175, height=300')"> <P><INPUT TYPE="button" VALUE="Write to the message window" onClick="window3.document.writeln('Hey there'); window3.document.close()"> <P><INPUT TYPE="button" VALUE="Close the message window" onClick="window3.close()"> <P><INPUT TYPE="button" VALUE="Close window2" onClick="window2.close()"> </FORM> </BODY> </HTML>
win2.html, который определяет содержимое окна window2,
содержит следующий код:
Пример 2. Создание фрэймов. Создаются два окна, каждое из 4 фрэймов. В
первом окне первый фрэйм содержит кнопки, которые изменяют цвет фона фрэймов в обоих окнах.
framset1.html, где определяются фрэймы первого окна, содержит следующий код:
Используйте метод alert для отображения сообщения, которое не
требует принятия пользователем решения. Аргумент message специфицирует текст сообщения.
Вы не можете специфицировать заголовок окна alert, но можете использовать метод open
для создания Вашего собственного диалога alert. См. open.
Пример
Функция testValue проверяет имя введённое пользователем в Text-объект
формы, чтобы гарантировать, что оно имеет не более 8 символов. Этот пример
использует метод alert для предупреждения пользователя.
function testValue(textElement) { if (textElement.length > 8) { alert("Please enter a name that is 8 characters or less") } }
Можно вызвать функцию testValue в обработчике onBlur
объекта Text, как здесь:
Строка данных, созданная методом кодирования base-64.
Описание
Этот метод декодирует строку данных, которая была кодирована с использованием base-64.
Например, метод window.btoa принимает
бинарную строку в качестве параметра и возвращает строку, кодированную в base-64.
Вы можете использовать метод window.btoa
для кодирования и передачи данных, а затем воспользоваться методом window.atob
для декодирования. Например, Вы можете закодировать, передать и декодировать символы, такие как ASCII-значения
с 0 по 31.
Вызов метода back эквивалентен нажатию кнопки Back в браузере. То
есть back отменяет последний шаг в любом месте окна верхнего уровня,
был ли он сделан в этом же или в другом фрэйме дерева фрэймов, загруженного из
окна верхнего уровня. По контрасту, метод back объекта history
переводит текущую историю окна или фрэйма на один шаг назад.
Например, рассмотрим следующий сценарий. Находясь во фрэйме Frame A, Вы
нажимаете кнопку Forward для изменения содержимого фрэйма Frame A. Затем Вы
переходите во Frame B и нажимаете кнопку Forward для изменения содержимого
фрэйма Frame B. Если Вы затем перейдёте обратно во Frame A и вызовете FrameA.back(),
содержимое фрэйма Frame B изменится (нажатие кнопки Back даст тот же эффект).
Если Вы хотите перейти именно во фрэйме Frame A, используйте FrameA.history.back().
Пример
Следующие специальные кнопки выполняют ту же операцию, что и кнопка Back браузера:
<P><INPUT TYPE="button" VALUE="< Go Back" onClick="history.back()"> <P><INPUT TYPE="button" VALUE="> Go Back" onClick="myWindow.back()">
Метод blur используется для удаления фокуса со специфицированного
окна или фрэйма. Удаление фокуса из окна переводит окно на задний план в большинстве оконных операционных систем.
Этот метод принимает двоичную строку ASCII в качестве параметра и возвращает
другую ASCII-строку, кодированную с использованием base-64.
Вы можете использовать этот метод для кодирования данных, которые могут иначе
вызвать коммуникационные проблемы, передать их, а затем использовать метод window.atob
для декодирования данных. Например, Вы можете кодировать такие символы, как значения ASCII от 0 до 31.
Если окно с фрэймами должно захватывать события на страницах, загружаемых с
разных серверов, Вы должны использовать captureEvents в
маркированном скрипте и предварительно вызвать enableExternalCapture.
Вы обязаны иметь привилегию UniversalBrowserWrite. Дополнительно
см. enableExternalCapture. О безопасности см. книгу Клиентский JavaScript. Руководство.
JavaScript 1.1: закрывает только окна, открытые JavaScript.
JavaScript 1.2: должны использоваться маркированные скрипты для безусловного закрытия окна.
Синтаксис
close()
Параметры
Отсутствуют.
Безопасность
Для безусловного закрытия окна Вы должны иметь привилегию UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Описание
Метод close закрывает специфицированное окно. Если Вы вызываете close
без специфицирования windowReference, JavaScript закрывает текущее окно.
Метод close закрывает только окна, открытые JavaScript с
использованием метода open. Если Вы попытаетесь закрыть любое
другое окно, генерируется диалог confirm, который предлагает подтвердить
закрытие окна. Это сделано для предотвращения "mail bombs/почтовых бомб",
содержащих self.close(). Однако, если окно содержит только один
документ (текущий) в истории текущей сессии, метод close выполняется без
подтверждения. Особый случай - с окнами one-off, которые должны открыть другие окна и только затем закрыться.
В обработчиках событий Вы обязаны специфицировать window.close()
вместо close(). Учитывая область видимости static-объектов в JavaScript,
вызов close() без специфицирования имени объекта эквивалентен document.close().
Примеры
Пример 1. Любая из следующих строк закрывает текущее окно:
window.close() self.close() close()
Пример 2: Закрытие главного окна браузера.
top.opener.close()
Пример 3. Здесь закрывается окно messageWin:
messageWin.close()
Предполагается, что окно было открыто примерно в такой манере:
Свойство closed это Булево значение, которое специфицирует, закрыто
ли окно. Когда окно закрывается, объект window, представляющий его,
продолжает существовать, и его свойство closed устанавливается в true.
Используйте метод closed для определения, открыто ли в данный
момент окно, которое Вы ранее открыли и на которое Вы имеете ссылку (из return-значения
метода window.open). Если окно закрыто, Вы не должны пытаться манипулировать им.
Примеры
Пример 1. Следующий код открывает окно win1, затем позже
проверяет, было ли оно закрыто. Вызываемая функция зависит от того, закрыто ли окно win1.
win1=window.open('opener1.html','window1','width=300,height=300') ... if (win1.closed) function1() else function2()
Пример 2. Определяется, закрыто ли окно, открывшее текущее окно, и вызывается соответствующая функция.
if (window.opener.closed) function1() else function2()
Используйте confirm для запроса у пользователя решения, которое
требует OK/подтверждения или Cancel/отмены. Аргумент message
специфицирует текст сообщения. Метод confirm возвращает true, если
нажата кнопка OK, и false, если нажата Cancel.
Вы не можете специфицировать заголовок окна confirm, но можете использовать
метод open для создания Вашего собственного диалога confirm.
См. open.
Пример
Метод confirm в функции confirmCleanUp используется
для подтверждения закрытия приложения. Если пользователь выбрал OK, специальная
функция cleanUp закрывает приложение.
function confirmCleanUp() { if (confirm("Are you sure you want to quit this application?")) { cleanUp() } }
Вы можете вызвать функцию confirmCleanUp в обработчике onClick
кнопки, как показано в этом примере:
Строка, вычисляемая в текст, который пользователь должен промаркировать.
selectionStyle
Строка, вычисляемая в:
ask специфицирует, что диалоговое окно предоставит пользователю список доступных сертификатов.
auto специфицирует, что Navigator автоматически выбирает сертификат из диапазона authority1 до authorityN.
authority1... authorityN
Строки по выбору, вычисляемые в Certificate Authorities, принимаемые сервером с использованием маркированного текста.
Описание
Метод signText спрашивает пользователя о проверке строки text
путём присоединения к ней цифровой подписи. Если параметр selectionStyle
установлен в ask, signText выводит диалог, и
пользователь обязан интерактивно выбрать сертификат для проверки текста. Если selectionStyle is
установлен в auto, Navigator пытается автоматически выбрать сертификат.
Используйте метод signText для отправки кодированной подписи на
сервер; сервер декодирует подпись и проверяет её. Если signText
терпит неудачу, он возвращает один из следующих error-кодов:
error:noMatchingCert - пользовательский сертификат не соответствует
ни одному из сертификатов, требуемых в диапазоне от authority1
до authorityN..
error:userCancel - пользователь отменил диалоговое окно подписи без отправки сертификата.
error:internalError - возникла внутренняя ошибка.
defaultStatus
Сообщение по умолчанию, выводимое в статусной строке в нижней части окна.
Сообщение defaultStatus появляется, если в статусной строке ничего
больше нет. Не путайте свойство defaultStatus со свойством status.
Свойство status отражает приоритетное или временной сообщение в
статусной строке, такое как при возникновении события mouseOver при проведении указателя мыши над якорем.
Вы можете установить свойство defaultStatus в любое время. Вы
обязаны возвращать true, если хотите устанавливать свойство defaultStatus
в обработчиках onMouseOut или onMouseOver.
Пример
Функция statusSetter устанавливает свойства status и defaultStatus
в обработчике onMouseOver:
function statusSetter() { window.defaultStatus = "Click the link for the Netscape home page" window.status = "Netscape home page" }
Заметьте, что в это примере обработчик onMouseOver возвращает true.
Вы обязаны возвращать true, если хотите устанавливать defaultStatus и status в обработчиках событий.
Используйте этот метод в маркированном скрипте, запрашивающем привилегии UniversalBrowserWrite,
и перед вызовом метода captureEvents.
Если Communicator видит дополнительные скрипты, которые ухудшают работу
действующих принципалов контейнера, он отключает захват внешних событий.
Дополнительные вызовы enableExternalCapture (после получения
привилегии UniversalBrowserWrite при уменьшенном наборе принципалов)
могут выполняться для возобновления захвата внешних событий.
Пример
Окно может захватывать все события Click, возникающие в его фрэймах.
Булево значение. Если true, специфицирует поиск с учётом регистра символов.
Если Вы предоставляете этот параметр, Вы обязаны также задать значение для backward.
backward
Булев. Если true, специфицирует поиск в обратном направлении (снизу вверх по
документу). Если Вы предоставляете этот параметр, Вы обязаны также задать значение для casesensitive.
Возвращает
true, если строка найдена; иначе - false.
Описание
Когда string специфицирован, браузер выполняет поиск сверху вниз без учёта
регистра символов. Если параметр string не специфицирован, метод выводит диалог Find, позволяющий пользователю ввести строку для поиска.
Используйте метод focus для перехода к специфицированному окну или
фрэйму и передаче ему фокуса. Передача фокуса окну переводит его на передний план в большинстве оконных операционных систем.
В JavaScript 1.1, на некоторых платформах, метод focus передаёт
фокус фрэйму, но этот фокус визуально не проявляется (например, рамка фрэйма не темнеет).
Примеры
Функция checkPassword подтверждает, что пользователь ввёл верный
пароль. Если введён неправильный пароль, метод focus возвращает
фокус объекту Password, а метод select выделяет его, чтобы пользователь мог повторно ввести пароль.
function checkPassword(userPass) { if (badPassword) { alert("Please enter your password again.") userPass.focus() userPass.select() } }
Предполагается, что объект Password определён так:
Этот метод выполняет такое же действие, что нажатие кнопки Forward в браузере.
Метод forward эквивалентен history.go(1).
При использовании с объектом Frame, forward работает так: во фрэйме Frame A
вы нажимаете кнопку Back для изменения содержимого фрэйма Frame A. Затем
переходите во фрэйм Frame B и нажимаете кнопку Back для изменения содержимого
фрэйма Frame B. Если Вы перейдёте обратно в Frame A и вызовете FrameA.forward(),
изменится содержимое фрэйма Frame B (нажатие кнопки Forward даст тот же эффект).
Если Вы хотите перейти во фрэйме Frame A, используйте FrameA.history.forward().
Примеры
Следующая кнопка выполняет то же действие, что и кнопка Forward браузера:
<P><INPUT TYPE="button" VALUE="< Go Forth" onClick="history.forward()"> <P><INPUT TYPE="button" VALUE="> Go Forth" onClick="myWindow.forward()">
Вы можете обратиться к дочерним фрэймам окна, используя массив frames.
Этот массив содержит вхождения для всех дочерних фрэймов (созданных тэгами FRAME)
в окне, содержащем тэг FRAMESET; вхождения расположены в порядке исходного кода.
Например, если окно содержит три фрэйма со значениями атрибутов NAMEfr1, fr2
и fr3, Вы можете обратиться к этим объектам в массиве images так:
Для создания окна размером менее 100 x 100 пикселов установите это свойство в маркированном скрипте.
Безопасность
Для установки внутренней высоты окна размером менее 100 x 100 или больше, чем
экран может вместить, Вам необходима привилегия UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Для создания окна размером менее 100 x 100 пикселов установите это свойство в маркированном скрипте.
Безопасность
Для установки внутренней ширины окна размером менее 100 x 100 или больше, чем
экран может вместить, Вам необходима привилегия UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Само значение свойства locationbar имеет свойство visible.
Если оно true, адресная строка видна; если false, она скрыта.
Безопасность
Установка значения свойства visible адресной строки требует
наличия привилегии UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Пример
Следующий пример создаёт окно "chromeless" (в окне chromeless отсутствуют панель
утилит, полосы прокрутки, статусные области и т.д., как в диалоговом окне),
пряча большую часть панелей пользовательского интерфейса:
Значение свойства menubar само имеет свойство visible.
Если оно true, строка меню видна; если false, меню скрыто.
Безопасность
Установка значения свойства visible строки меню требует
наличия привилегии UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Примеры
Следующий пример создаёт окно "chromeless" (в окне chromeless отсутствуют панель
утилит, полосы прокрутки, статусные области и т.д., как в диалоговом окне),
пряча большую часть панелей пользовательского интерфейса:
Количество пикселов, на которое окно перемещается по горизонтали.
vertical
Количество пикселов, на которое окно перемещается по вертикали.
Описание
Этот метод перемещает окно, прибавляя или вычитая специфицированное количество пикселов к текущему положению.
Безопасность
Выход за пределы одной из границ экрана (и скрытие части или всего окна) требует
маркированного JavaScript, иначе окно не будет перемещаться за пределы экрана.
Для этого необходимо иметь привилегию UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Пример
Чтобы переместить текущее окно на 5 пикселов вверх (ось x) и на 10 пикселов
вправо (ось у) от текущей позиции, используйте такой оператор:
Этот метод перемещает окно в абсолютное положение, указанное его параметрами (в
пикселах). Начало отсчёта по осям ведётся от абсолютной позиции (0,0); это верхний левый угол экрана монитора.
Безопасность
Выход за пределы одной из границ экрана (и скрытие части или всего окна) требует
маркированного JavaScript, иначе окно не будет перемещаться за пределы экрана.
Для этого необходимо иметь привилегию UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Пример
Для перемещения текущего окна на 25 пикселов от верхней границы экрана (ось x) и
на 10 пикселов от левого края экрана (ось y) используйте такой оператор:
В JavaScript 1.0 NAME было свойством только для чтения/read-only. В
последующих версиях это свойство может изменяться Вашим кодом. Это даёт
возможность присваивать имя окну верхнего уровня.
Пример
Первый оператор создаёт окно netscapeWin. Второй оператор выводит
значение "netscapeHomePage" в диалоге Alert, поскольку "netscapeHomePage"
является значением аргумента windowName окна netscapeWin.
По умолчанию Navigator автоматически определяет, выполняются ли обновления окна
в offscreen-буфере, а затем отображаются в окне. Вы можете либо полностью
отключить буферизацию, либо "потребовать" от Navigator'а
буферизовать обновления, установив в offscreenBuffering значение false
или true, соответственно.
Буферизация может уменьшить мигание экрана, которое возникает при обновлении
окна, но это требует дополнительных системных ресурсов.
JavaScript 1.2: добавлено несколько новых windowFeatures.
Синтаксис
open(URL, windowName[, windowFeatures])
Параметры
URL
Строка, специфицирующая URL для открытия в новом окне. См. в Location
описание компонентов URL.
windowName
Строка, специфицирующая имя окна, используемое в атрибуте TARGET
тэга FORM или A. windowName может содержать только алфавитные символы, цифры и знак подчёркивания (_).
windowFeatures
Строка, специфицирующая список (с разделёнием запятыми), в которой
определяется, создавать или нет различные стандартные параметры окна. Эти опции рассматриваются в следующем разделе.
Описание
В обработчиках событий Вы обязаны специфицировать window.open()
вместо open(). Из-за ограничений области видимости static-объектов
JavaScript, вызов open() без специфицирования имени объекта
эквивалентен document.open().
Метод open открывает новое окно Web-браузера на стороне клиенте,
что аналогично выбору меню New->Navigator Window из File.
Аргумент URL специфицирует URL - содержимое нового окна. Если URL
это пустая строка, создаётся новое пустое окно.
Вы можете использовать метод open в существующем окне, и, если Вы
передаёте в качестве URL пустую строку, Вы получите ссылку на существующее окно,
но не загрузите в него ничего. Вы можете, например, найти свойства в окне.
windowFeatures это строка по выбору/optional,
содержащая список разделённых запятыми опций нового окна (не включайте в список
пробелы). После открытия окна вы не сможете использовать JavaScript для
изменения windowFeatures. Вы можете специфицировать:
Таблица 1.4 Опции, специфицируемые для вновь открываемого окна
windowFeatures
Описание
alwaysLowered
(JavaScript 1.2) Если yes, создаётся новое окно, которое всплывает ниже других
окон, независимо от того, активно оно или нет. Это секретная опция и она обязана устанавливаться в маркированных скриптах.
alwaysRaised
(JavaScript 1.2) Если yes, создаётся новое окно, которое всплывает выше других
окон, независимо от того, активно оно или нет. Это секретная опция и она обязана устанавливаться в маркированных скриптах.
dependent
(JavaScript 1.2) Если yes, создаётся новое окно - потомок текущего окна.
Зависимое окно закрывается, если закрывается его окно-родитель. На платформе Windows зависимое окно не появляется на панели задач.
directories
Если yes, создаются стандартные кнопки директорий браузера, такие как What's New и What's Cool.
height
(JavaScript 1.0 и 1.1) Специфицирует высоту окна в пикселах.
hotkeys
(JavaScript 1.2) Если no (или 0), отключает большинство горячих клавиш в новом
окне, которое не имеет строки меню. Комбинации security и quit продолжают функционировать.
innerHeight
(JavaScript 1.2) Специфицирует высоту области содержимого окна в пикселах. Для
создания окна размером менее 100 x 100 пикселов установите это свойство в
маркированном скрипте. Это свойство заменило height, которое оставлено для обеспечения обратной совместимости.
innerWidth
(JavaScript 1.2) Специфицирует ширину области содержимого окна в пикселах. Для
создания окна размером менее 100 x 100 пикселов установите это свойство в
маркированном скрипте. Это свойство заменило width, которое оставлено для обеспечения обратной совместимости.
location
Если yes, создаёт поле ввода Location.
menubar
Если yes, создаёт строку меню в верхней части окна.
outerHeight
(JavaScript 1.2) Специфицирует размер по вертикали в пикселах внешней границы
окна. Для создания окна размером менее 100 x 100 пикселов установите это свойство в маркированном скрипте.
personalbar
(JavaScript 1.2) Если yes, создаёт панель Personal Toolbar, которая отображает
кнопки из пользовательской папки закладок Personal Toolbar.
resizable
Если yes, даёт пользователю возможность изменять размеры окна.
screenX
(JavaScript 1.2) Специфицирует расстояние, на котором новое окно помещается от
левого края экрана. Для помещения окна за пределы экрана/offscreen установите эту опцию в помеченном скрипте.
screenY
(JavaScript 1.2) Специфицирует расстояние, на котором новое окно помещается от
верха экрана. Для помещения окна за пределы экрана/offscreen установите эту опцию в помеченном скрипте.
scrollbars
Если yes, создаются вертикальная и горизонтальная полосы прокрутки, если Документ становится больше размеров окна.
status
Если yes, создаётся статусная строка внизу окна.
titlebar
(JavaScript 1.2) Если yes, создаётся окно со строкой заголовка. Для установки titlebar
в no, установите эту опцию в маркированном скрипте.
toolbar
Если yes, создаётся стандартная панель браузера с кнопками, такими как Back и Forward.
width
(JavaScript 1.0 и 1.1) Специфицирует ширину окна в пикселах.
z-lock
(JavaScript 1.2) Если yes, создаётся новое окно, которое не перекрывает другие
окна при его активации. Это секретная опция и она обязана устанавливаться в маркированных скриптах.
Многие из этих опций (как указано выше) могут иметь значение yes или no. Для
этих опций можно использовать 1 вместо yes и 0 вместо no. Если Вы хотите
включить опцию, Вы можете просто указать имя опции в строке windowFeatures.
Если windowName не специфицирует существующее окно и Вы не
предоставляете параметр windowFeatures, все опции, имеющие выбор yes/no,
устанавливаются по умолчанию в yes. Однако, если Вы предоставляете параметр windowFeatures,
то опции titlebar и hotkeys останутся yes по умолчанию,
но другие опции, имеющие выбор yes/no, будут по умолчанию no.
Например, все следующие операторы включают опцию toolbar и отключают все другие Булевы опции:
Однако поведение опций alwaysLowered, alwaysRaised и z-lock
зависит от иерархии окон на конкретной платформе.
Например, в Windows окно браузера alwaysLowered или z-locked
находится ниже всех остальных окон всех приложений. В Macintosh окно браузера alwaysLowered
находится ниже остальных окон, но не обязательно ниже окон других
приложений. Аналогично для окон alwaysRaised.
Вы можете использовать open для открытия нового окна, а затем - в
этом новом окне - для открытия другого окна, и так далее. Таким способом Вы
можете составить цепочку открытых окон, каждое из которых имеет свойство opener,
указывающее на окно, открывшее данное окно.
Communicator допускает максимум 100 открытых окон. Если Вы открыли окно window2
из окна window1 и затем завершили работу с window1,
установите свойство opener окна window2
в null. Это позволит JavaScript убрать мусор - окно window1.
Если Вы не установите свойство opener в null, объект window1
останется, даже если он реально уже не нужен.
Безопасность
Для выполнения следующих операций Вам нужно иметь привилегию UniversalBrowserWrite:
Для создания окна размером менее 100 x 100 пикселов или больше, чем экран
может вместить, с помощью innerWidth, innerHeight, outerWidth
и outerHeight.
Для перемещения окна за пределы экран с использованием screenX и screenY.
Для создания окна без строки заголовка/titlebar с использованием titlebar.
Для использования alwaysRaised, alwaysLowered или z-lock для любых установок.
Пример 2. Это обработчик onClick, который открывает новое
клиентское окно, выводя содержимое, специфицированное в файле sesame.html.
Окно открывается со специфицированными установками опций; все другие опции будут false, поскольку не специфицированы.
Если исходный документ открывает целевое окно методом open,
свойство opener специфицирует окно исходного документа. Вычисляйте
свойство opener целевого окна.
Это свойство существует до выгрузки документа в открытом окне.
Вы можете изменить свойство opener в любое время.
Можно использовать window.open для открытия
нового окна, а затем использовать window.open
для открытия другого окна, и так далее. Таким способом Вы можете составить
цепочку открытых окон, каждое из которых имеет свойство opener,
указывающее на окно, открывшее данное окно.
Communicator допускает максимум 100 открытых окон. Если Вы открыли окно window2
из окна window1 и затем завершили работу с window1,
установите свойство opener окна window2
в null. Это позволит JavaScript убрать мусор - окно window1.
Если Вы не установите свойство opener в null, объект window1
останется, даже если он реально уже не нужен.
Примеры
Пример 1: Закрытие opener'а. Этот код закрывает
окно, которое открыло текущее окно. Если opener-окно закрывается, opener
остаётся без изменений. Однако window.opener.name вычисляется теперь в undefined.
window.opener.close()
Пример 2: Закрытие главного окна браузера.
top.opener.close()
Пример 3: Вычисление имени opener'а. Окно может определить имя своего opener'а так:
document.write("<BR>opener property is " + window.opener.name)
Пример 4: Изменение значения opener. Этот код изменяет значение свойства opener
в null. После выполнения этого кода вы не сможете закрыть opener-окно так, как это делается в Примере 1.
window.opener=null
Пример 5: Изменение значения свойства через opener. Изменяется цвет фона
окна, специфицированного свойством opener.
Внешняя граница включает полосы прокрутки, статусную строку, панели toolbars и
другой "chrome" (элементы пользовательского интерфейса рамки окна). Для создания
окна размером менее 100 x 100 пикселов, установите это свойство в маркированном скрипте.
Внешняя граница включает полосы прокрутки, статусную строку, панели toolbar и
другой "chrome" (элементы пользовательского интерфейса рамки окна). Для создания
окна размером менее 100 x 100 пикселов, установите это свойство в маркированном
скрипте.
Свойство pageXOffset предоставляет текущую x-позицию страницы
относительно верхнего левого угла области содержимого окна. Это свойство
используется, если Вам необходимо найти текущую позицию прокручиваемой страницы
перед использованием scrollTo или scrollBy.
Пример
Этот пример возвращает x-позицию видимой страницы.
Свойство pageYOffset предоставляет текущую у-позицию страницы
относительно верхнего левого угла области содержимого окна. Это свойство
используется, если Вам необходимо найти текущую позицию прокручиваемой страницы
перед использованием scrollTo или scrollBy.
Пример
Этот пример возвращает у-позицию видимой страницы.
Это свойство имеет смысл только для фрэймов; то есть для окон, которые не являются окнами верхнего уровня.
Свойство parent ссылается на тэг FRAMESET окна фрэйма.
Дочерние фрэймы в данном frameset ссылаются на родственные фрэймы через
использование parent вместо имени окна одним из следующих способов:
parent.frameName parent.frames[index]
Например, если четвёртый фрэйм набора имеет NAME="homeFrame",
фрэймы-родственники могут ссылаться на этот фрэйм через использование parent.homeFrame
или parent.frames[3].
Вы можете использовать parent.parent для обращения к фрэйму или
окну-"дедушке", если тэг FRAMESET вложен в дочерний фрэйм.
Значением свойства parent является
<object nameAttribute>
где nameAttribute это атрибут NAME, если родитель
является фрэймом, или внутренняя ссылка, если родителем является окно.
Представляет персональную панель окна браузера (называемую также панелью
директорий). Эту область пользователь может использовать для быстрого доступа к определённым закладкам.
Значение свойства personalbar само имеет свойство visible.
Если оно true, персональная панель отображается; если false, панель скрыта.
Безопасность
Установка значения свойства visible персональной панели требует
наличия привилегии UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Пример
Следующий пример делает окно, на которое ссылаются, "chromeless" (в
chromeless-окнах нет панелей toolbars, полос прокрутки, статусной области и
т.д., что делает их похожими на диалоговые окна), пряча большинство из панелей интерфейса пользователя:
Строка или целое число представляющее значение по умолчанию поля ввода.
Описание
Диалог prompt выглядит так:
Используйте метод prompt для вывода диалогового окна, принимающего ввод от пользователя.
Если Вы не специфицируете начальное значение для inputDefault, диалог показывает
<undefined>.
Вы не можете специфицировать заголовок диалога prompt, но можете использовать метод
open для создания Вашего собственного prompt-диалога.
См. open.
Примеры
prompt("Enter the number of cookies you want to order:", 12)
Устанавливает освобождение объектами window или document захваченных событий специфицированного типа,
отправляя событие следующим объектам по иерархии событий.
ПРИМЕЧАНИЕ:
Если первоначальной целью/target события является окно, это окно получает
событие, даже если оно имеет установку освобождать события этого типа.
Количество пикселов, на которое окно изменяет размер по горизонтали.
vertical
Количество пикселов, на которое окно изменяет размер по вертикали.
Описание
Этот метод изменяет размеры окна через установку свойств outerWidth
и outerHeight. Верхний левый угол остаётся
на месте, а нижний правый угол перемещается. resizeBy перемещает окно, прибавляя или вычитая специфицированное
количество пикселов к координатам текущей позиции правого нижнего угла.
Безопасность
Выход за любую границу экрана (для скрытия части или всего окна) требует
маркированного JavaScript, иначе окно не будет перемещаться за пределы экрана.
Кроме того, окна имеют форсированный минимальный размер 100 x 100 пикселов;
изменение размеров окна меньше этого минимума требует маркированного JavaScript.
Для этого Вам нужна привилегия UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Пример
Чтобы сделать текущее окно на 5 пикселов уже и на 10 пикселов выше, используйте
такой оператор:
Этот метод изменяет размеры окна, устанавливая его свойства outerWidth
и outerHeight. Верхний левый угол остаётся на месте, а правый нижний угол перемещается. resizeBy перемещает на специфицированную позицию. Началом осей является абсолютная позиция (0,0); это левый верхний угол дисплея.
Безопасность
Выход за любую границу экрана (для скрытия части или всего окна) требует
маркированного JavaScript, иначе окно не будет перемещаться за пределы экрана.
Кроме того, окна имеют форсированный минимальный размер 100 x 100 пикселов;
изменение размеров окна меньше этого минимума требует маркированного JavaScript.
Для этого Вам нужна привилегия UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Примеры
Чтобы сделать окно шириной 225 пикселов и высотой 200 пикселов, используйте этот оператор:
В JavaScript 1.2, scroll больше не используется и заменён на scrollTo. scrollTo расширяет возможности метода scroll. scroll оставлен для обеспечения обратной совместимости.
scrollbars
Представляет вертикальную и горизонтальную полосы прокрутки окна браузера для области документа.
Значение свойства scrollbars само имеет свойство visible.
Если оно true, видны обе полосы прокрутки; если false, они скрыты.
Безопасность
Установка значения свойства visible полос прокрутки требует
наличия привилегии UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Примеры
Следующий пример делает окно, на которое ссылаются, "chromeless" (в
chromeless-окнах нет панелей toolbar, полос прокрутки, статусной области и
т.д., что делает их похожими на диалоговые окна), пряча большинство из панелей интерфейса пользователя:
Количество пикселов, на которое область просмотра прокручивается по горизонтали.
vertical
Количество пикселов, на которое область просмотра прокручивается по вертикали.
Описание
Этот метод прокручивает содержимое окна, если часть содержимого находится за пределами окна. scrollBy прокручивает окно, добавляя или вычитая специфицированное количество пикселов относительно текущей позиции.
Чтобы этот метод работал, свойство visible для опции window.scrollbars
обязано быть true.
Пример
Для прокрутки текущего окна на 5 пикселов влево и на 30 пикселов вниз от текущей позиции, используйте:
Целое число, представляющее x-координату области просмотра в пикселах.
y-coordinate
Целое число, представляющее у-координату области просмотра в пикселах.
Описание
scrollTo заменил scroll. scroll оставлен для обеспечения обратной совместимости.
Метод scrollTo прокручивает содержимое окна, если имеются невидимые
части за пределами окна. Чтобы этот метод работал, свойство visible
для опции window.scrollbars обязано быть true.
Примеры
Пример 1: Прокрутка текущей области просмотра. Для прокрутки окна к левой
границе и на 20 пикселов вниз от верха окна, используйте этот оператор:
Пример 2: Прокрутка другой области просмотра. Это код, расположенный в
одном фрэйме, прокручивает область просмотра другого фрэйма. Два объекта Text
дают пользователю возможность специфицировать координаты x и y. если
пользователь щёлкает по кнопке Go, документ в frame2 прокручивается на специфицированные координаты.
<SCRIPT> function scrollIt(form) { var x = parseInt(form.x.value) var y = parseInt(form.y.value) parent.frame2.scrollTo(x, y) } </SCRIPT> <BODY>
Свойство self ссылается на текущее окно. То есть значение этого свойства является синонимом самого объекта.
Используйте свойство self для устранения неоднозначности свойства window
при вызове из формы или элемента формы с тем же именем. Вы можете также
использовать свойство self, для того чтобы сделать Ваш код более читабельным.
Значением свойства self является
<object nameAttribute>
где nameAttribute это атрибут NAME, если self
ссылается на фрэйм, или внутренняя ссылка, если self ссылается на окно.
Пример
В этом примере self.status используется для установки свойства status
текущего окна. Такое использование устраняет неоднозначность свойства status
текущего окна при вызове из формы или элемента формы с названием status внутри текущего окна.
<A HREF="" onClick="this.href=pickRandomURL()" onMouseOver="self.status='Pick a random URL' ; return true"> Go!</A>
setHotKeys
Включает или отключает "горячие клавиши" в данном окне, которое не имеет меню.
Для включения/отключения горячих клавиш Вам нужно иметь привилегию UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Описание
По умолчанию горячие клавиши отключены в окне, в котором отсутствует меню. С
помощью метода setHotKeys вы можете явным образом
включать/отключать все горячие клавиши, за исключением security и quit, которые всегда включены.
Можно также специфицировать включение горячих клавиш во время создания окна,
если используется метод window.open.
Вычисляет выражение или вызывает функцию каждый раз при истечении
специфицированного количества миллисекунд, пока не будет отменён вызовом метода clearInterval.
Строка, содержащая выражение JavaScript. Это выражение обязано быть заключено
в кавычки; иначе setInterval вызывает его немедленно. Например, setInterval("calcnum(3, 2)", 25).
msec
Числовое значение или строка цифр, в миллисекундах.
arg1, ..., argn
Аргументы, если имеются, передаваемые в function.
Описание
Таймаут работает до момента уничтожения ассоциированного окна или фрэйма или до
отмены интервала методом clearInterval.
setInterval не нарушает выполнение скрипта. Скрипт продолжается
сразу после выполнения метода (не ожидая повторения интервала). Его вызов просто откладывает будущее событие.
Пример
Этот код отображает текущее время в объекте Text. В функции startclock
вызов метода setInterval заставляет вызывать функцию showtime
каждую секунду для обновления показаний часов. Заметьте, что функция startclock
и метод setInterval вызываются только один раз каждый.
<SCRIPT LANGUAGE="JavaScript"> var timerID = null var timerRunning = false
function stopclock(){ if(timerRunning) clearInterval(timerID) timerRunning = false }
function startclock(){ // Убедиться, что часы остановлены stopclock() timerID = setInterval("showtime()",1000) timerRunning = true }
function showtime(){ var now = new Date() var hours = now.getHours() var minutes = now.getMinutes() var seconds = now.getSeconds() var timeValue = "" + ((hours > 12) ? hours - 12 : hours) timeValue += ((minutes < 10) ? ":0" : ":") + minutes timeValue += ((seconds < 10) ? ":0" : ":") + seconds timeValue += (hours >= 12) ? " P.M." : " A.M." document.clock.face.value = timeValue } </SCRIPT>
Булево значение, специфицирующее, может ли пользователь изменять размеры окна:
true разрешает
false запрещает
Описание
По умолчанию новое окно Navigator'а может менять
размеры. Методом setResizable Вы можете явно разрешить или
запретить пользователю изменять размеры окна. Не все операционные системы поддерживают этот метод.
Вы можете также специфицировать, может ли окно изменять размеры во время
создания, если используется метод window.open.
Строка, содержащая выражение JavaScript. Выражение обязано быть заключено в
кавычки; иначе setTimeout вызывает его немедленно. Например, setTimeout("calcnum(3, 2)", 25).
msec
Числовое значение или строка цифр, в миллисекундах.
function
Любая функция.
arg1, ..., argN
Аргументы, если имеются, передаваемые в function.
Описание
Метод setTimeout вычисляет выражение или вызывает функцию по
истечении специфицированного количества времени. Он не выполняется повторно.
Например, если метод setTimeout специфицирует 5 секунд, через пять
секунд вычисляется выражение или вызывается функция, но не каждые пять секунд.
Для выполнения повторяющихся таймаутов используйте метод setInterval.
setTimeout не нарушает выполнение скрипта. Скрипт продолжается
сразу после выполнения метода (не ожидая повторения интервала). Его вызов просто откладывает будущее событие.
Примеры
Пример 1. Сообщение alert выводится через 5 секунд (5,000 миллисекунд)
после щелчка пользователя по кнопке. Если пользователь щёлкает вторую кнопку до
вывода сообщения, таймаут отменяется и alert не отображается.
<SCRIPT LANGUAGE="JavaScript"> function displayAlert() { alert("5 seconds have elapsed since the button was clicked.") } </SCRIPT> <BODY> <FORM> Click the button on the left for a reminder in 5 seconds; click the button on the right to cancel the reminder before it is displayed. <P> <INPUT TYPE="button" VALUE="5-second reminder" NAME="remind_button" onClick="timerID=setTimeout('displayAlert()',5000)"> <INPUT TYPE="button" VALUE="Clear the 5-second reminder" NAME="remind_disable_button" onClick="clearTimeout(timerID)"> </FORM> </BODY>
Пример 2. Выводится текущее время в объекте Text. Функция showtime,
вызываемая рекурсивно, использует метод setTimeout для обновления значения каждую секунду.
<HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- var timerID = null var timerRunning = false function stopclock(){ if(timerRunning) clearTimeout(timerID) timerRunning = false } function startclock(){ // Убедиться, что часы остановлены stopclock() showtime() }
function showtime(){ var now = new Date() var hours = now.getHours() var minutes = now.getMinutes() var seconds = now.getSeconds() var timeValue = "" + ((hours > 12) ? hours - 12 : hours) timeValue += ((minutes < 10) ? ":0" : ":") + minutes timeValue += ((seconds < 10) ? ":0" : ":") + seconds timeValue += (hours >= 12) ? " P.M." : " A.M." document.clock.face.value = timeValue timerID = setTimeout("showtime()",1000) timerRunning = true } //--> </SCRIPT> </HEAD>
alwaysRaised создаёт новое окно, которое всплывает поверх всех других окон, независимо от того, активно оно или нет.
alwaysLowered создаёт новое окно, которое всплывает ниже всех других окон, независимо от того, активно оно или нет.
z-lock создаёт новое окно, которое не всплывает поверх других окон при активации.
Безопасность
Для установки этого свойства необходимо обладать привилегией UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Описание
По умолчанию окно Navigator'а переходит наверх в
порядке z-order при активации и переходит вниз в порядке z-order при активации
других окон. С помощью метода setZOptions Вы можете явно
специфицировать положение окна в порядке z-order.
Если Вы не специфицируете аргумент для setZOptions, этот метод
восстанавливает стэкирование z-order по умолчанию окна Navigator'а.
Вы можете также специфицировать поведение порядка стэкирования окна во время его
создания при использовании метода window.open.
Не путайте свойство status со свойством defaultStatus.
Свойство defaultStatus отражает сообщение по умолчанию, выводимое в статусной строке/status bar.
Вы можете установить свойство status в любое время. Вы обязаны
возвращать true, если хотите установить свойство status в
обработчике onMouseOver.
Примеры
Предположим, Вы создали функцию JavaScript под названием pickRandomURL,
которая даёт возможность выбрать произвольный URL.
Вы можете использовать обработчик onClick в якоре для динамического
специфицирования значения атрибута HREF этого якоря и обработчик onMouseOver
- для специфицирования специального сообщения для окна - в свойстве status:
<A HREF="" onClick="this.href=pickRandomURL()" onMouseOver="self.status='Pick a random URL'; return true"> Go!</A>
Здесь свойство status окна присваивается свойству self
окна таким образом: self.status.
Значение свойства statusbar само имеет свойство visible.
Если оно true, статусная строка отображается; если false, она скрыта.
Безопасность
Установка значения свойства visible статусной строки требует
наличия привилегии UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Примеры
Следующий пример делает окно, на которое ссылаются, "chromeless" (в
chromeless-окнах нет панелей toolbar, полос прокрутки, статусной области и
т.д., что делает их похожими на диалоговые окна), пряча большинство из панелей
интерфейса пользователя:
Значение свойства toolbar само имеет свойство visible.
Если оно true, toolbar отображается; если false, панель скрыта.
Безопасность
Установка значения свойства visible панели toolbar требует наличия
привилегии UniversalBrowserWrite. О безопасности см. книгу Клиентский JavaScript. Руководство.
Пример
Следующий пример делает окно, на которое ссылаются, "chromeless" (в
chromeless-окнах нет панели toolbar, полос прокрутки, статусной области и т.д.,
что делает их похожими на диалоговые окна), пряча большинство из панелей
интерфейса пользователя:
Свойство top ссылается на самое верхнее окно, содержащее фрэймы или
вложенные наборы фрэймов/frameset. Используйте свойство top для обращения к этому окну-предку.
Значением этого свойства является
<object objectReference>
где objectReference это внутренняя ссылка.
Примеры
Оператор top.close() закрывает самое верхнее окно иерархии окон .
Оператор top.length специфицирует количество фрэймов, содержащихся
внутри самого верхнего окна. Если самый верхний предок определён так, top.length возвращает 3:
Свойство window ссылается на текущее окно или фрэйм. То есть
значение этого свойства является синонимом самого объекта.
Хотя можно использовать свойство window как синоним текущего фрэйма,
Ваш код будет лучше читаться, если вы будете использовать свойство self.
Например, window.name и self.name оба специфицируют
имя текущего фрэйма, но self.name легче понять (поскольку фрэйм не
отображается как отдельное окно).
Используйте свойство window для устранения неоднозначности свойства
объекта window при вызове из формы или элемента формы с тем же
именем. Вы можете также использовать свойство window, чтобы сделать
код более понятным.
Значением свойства window является
<object nameAttribute>
где nameAttribute это атрибут NAME, если window
ссылается на фрэйм, или внутренняя ссылка, если window ссылается на окно.
Пример
Здесь window.status используется для установки свойства status
текущего окна. Такое использование устраняет неоднозначность свойства status
текущего окна при обращении к текущему окну из формы, которая называется "status", в текущем окне.
<A HREF="" onClick="this.href=pickRandomURL()" onMouseOver="window.status='Pick a random URL' ; return true"> Go!</A>