Документ в процессе разработки!

Глава 4.13. Отображение документов в DOM и Gecko

4.13.1. Отображение документов в DOM и обозревателях

DOM 2 не содержит детальной спецификации интерфейсов, связанных с отображением документов, такие спецификации появятся в DOM 3. Он определяет интерфейс AbstractView, предназначенный для установления связи между документом и его отображением, но не описывает его свойств и поведения.

Интерфейс AbstractView является базовым для всех отображений документа (окон, фреймов и т. п.). Он имеет единственное свойство document, возвращающее указатель на объект Document, соответствующий отображаемому документу. Интерфейс Document, в свою очередь, может иметь свойство defaultView типа AbstractView, указывающее на окно отображения документа.

Для практической реализации обозревателей такой спецификации явно недостаточно, поэтому разработчики пока пользуются собственными (нестандартными) спецификациями интерфейса для окон обозревателя. Соответствующий объект традиционно называется window.

Объект window соответствует окну обозревателя. Он позволяет нам получить доступ к документу, загруженному в данное окно, к событиям, которые происходят в окне, и к различным свойствам обозревателя. Этот объект является глобальным объектом клиентской среды JavaScript, поэтому для доступа к его свойствам и методам префикс window. не нужен. Однако, для читаемости кода он может использоваться; помните, что он всегда указывает на текущее окно.

Обычно, объект window создается самим обозревателем при открытии HTML-документа. Если документ не содержит фреймов, то ему соответствует единственный объект window. Если же документ содержит фреймы, то создается один объект window для главного документа и по одному объекту window для каждого из фреймов, которые являются детьми главного окна. При закрытии главного окна его дети закрываются автоматически.

К сожалению, объект window реализован в Internet Explorer и Gecko по-разному. По этой причине мы решили дать для них отдельные описания. Окна Gecko описаны в этой главе, а окна Internet Explorer в следующей.

4.13.2. Окна Gecko: объект window

Объект window в Gecko представляет собой сочетание классического окна Netscape 4.x с некоторыми возможностями окон Internet Explorer. Приведенное здесь описание основано на Gecko DOM window Reference Внешняя ссылка. Полная спецификация интерфейсов Gecko еще далека от завершения, поэтому некоторые свойства помечены ниже как недокументированные.

Свойства объекта window
Свойство Изменяемое Описание
_content Нет Возвращает указатель на содержание окна.
appCore Да Недокументированное свойство.
closed Нет Проверяет, закрыто ли заданное окно.
Components Нет Коллекция компонентов, установленных в обозревателе.
controllers Нет Коллекция объектов типа XUL Controllers.
crypto Нет Объект, обеспечивающий доступ к методам шифрования.
defaultStatus Да Сообщение по умолчанию в строке состояния обозревателя.
directories Нет Объект barProp, соответствующий панели каталогов обозревателя.
document Нет Объект document, указывающий на HTML-документ, открытый в заданном окне.
frames Нет Коллекция всех объектов window, определенных документом в данном окне.
history Нет Объект history, обеспечивающий доступ к истории просмотра узлов.
innerHeight Да Размер клиентской области окна по вертикали.
innerWidth Да Размер клиентской области окна по горизонтали.
length Нет Количество фреймов в данном окне.
location Да Объект location, содержащий URI документа в данном окне.
locationbar Нет Объект barProp, соответствующий адресной строке обозревателя.
menubar Нет Объект barProp, соответствующий меню обозревателя.
name Нет Имя фрейма или окна.
navigator Нет Объект navigator, содержащий информацию обо обозревателе.
opener Да Ссылка на окно, создавшее данное окно.
outerHeight Да Полный размер окна по вертикали.
outerWidth Да Полный размер окна по горизонтали.
pageXOffset Да Текущая позиция страницы по горизонтали относительно верхнего левого угла окна.
pageYOffset Да Текущая позиция страницы по вертикали относительно верхнего левого угла окна.
parent Нет Доступ к отцу данного окна.
personalbar Нет Объект barProp, соответствующий строке ссылок обозревателя.
pkcs11 Нет Ссылка на объект pkcs11.
prompter Да Ссылка на окно, созданное методом prompt.
screen Нет Объект screen, содержащий сведения о клиентской области отображения.
screenX Да Расстояние от левой границы экрана до левой границы окна обозревателя.
screenY Да Расстояние от верхней границы экрана до верхней границы окна обозревателя.
scrollbars Нет Объект barProp, соответствующий полосам прокрутки окна обозревателя.
scrollX Нет Прокрутка документа по горизонтали.
scrollY Нет Прокрутка документа по вертикали.
self Да Ссылка на текущее окно.
sidebar Нет Ссылка на боковую панель обозревателя.
status Да Текст сообщения в строке состояния обозревателя.
statusbar Да Объект barProp, соответствующий строке состояния обозревателя.
title Да Заголовок окна.
toolbar Да Объект barProp, соответствующий панели кнопок обозревателя.
top Нет Возвращает ссылку на первое окно в иерархии объектов window.
window Нет Ссылка на текущее окно.
Методы объекта window
Метод Описание
alert Создает диалоговое окно сообщения.
back Осуществляет возврат на один шаг по истории просмотра узлов для всех фреймов верхнего окна.
blur Заставляет объект потерять фокус и генерирует событие onblur.
captureEvents Включает перехват всех событий заданного типа.
clearInterval Сбрасывает интервал, заданный методом setInterval.
clearTimeout Сбрасывает таймаут, заданный методом setTimeout.
close Закрывает текущее окно обозревателя.
confirm Создает диалоговое окно подтверждения.
disableExternalCapture Запрещает окну с фреймами перехватывать события на страницах, загруженных с других серверов.
dump Выводит заданный текст в консоль JavaScript.
enableExternalCapture Разрешает окну с фреймами перехватывать события на страницах, загруженных с других серверов.
escape Преобразует строку в шестнадцатеричную кодировку.
focus Заставляет объект получить фокус и генерирует событие onfocus.
forward Осуществляет переход на один шаг вперед по истории просмотра узлов для всех фреймов верхнего окна.
GetAttention Вызывает мигание иконки обозревателя.
getSelection Возвращает выбранный фрагмент экрана.
home Загружает домашнюю страницу пользователя.
moveBy Сдвигает окно на заданную величину.
moveTo Сдвигает окно в заданную позицию.
open Создает новое окно.
print Печатает документ, открытый в заданном окне.
prompt Создает диалоговое окно для ввода пользователем строки.
releaseEvents Отключает перехват событий заданного типа.
resizeBy Изменяет размеры окна на заданную величину.
resizeTo Задает новые размеры окна.
routeEvent Пропускает перехваченное событие вниз по иерархии объектов.
scroll Прокручивает окно до заданной позиции.
scrollBy Прокручивает окно на заданную величину.
scrollByLines Прокручивает окно на заданное число строк.
scrollByPages Прокручивает окно на заданное число страниц.
scrollTo Прокручивает окно до заданной позиции.
setCursor Изменяет форму курсора.
setInterval Задает периодическое вычисление выражения всякий раз, когда истечет данный интервал.
setTimeout Задает вычисление выражения, когда истечет данный таймаут.
sizeToContent Изменяет размер окна соответственно его содержимому.
stop Останавливает загрузку в окно.
unescape Преобразует шестнадцатеричную кодировку в строку.
updateCommands Недокументировано.
События объекта window
Событие Описание
onabort Генерируется при прерывании загрузки страницы.
onblur Генерируется, когда окно теряет фокус.
onchange Генерируется при изменении значения элемента формы в окне.
onclick Генерируется при щелчке кнопкой мыши.
onclose Генерируется при закрытии окна.
ondragdrop Генерируется при перетаскивании внешнего объекта в окно.
onerror Генерируется при возникновении ошибки в процессе загрузки документа.
onfocus Генерируется, когда окно получает фокус.
onkeydown Генерируется при нажатии клавиши.
onkeypress Генерируется при удержании нажатой клавиши.
onkeyup Генерируется при отпускании клавиши.
onload Генерируется сразу после загрузки документа.
onmousedown Генерируется при нажатии кнопки мыши.
onmousemove Генерируется при движении курсора мыши по элементу в окне.
onmouseout Генерируется при покидании курсором мыши элемента в окне.
onmouseover Генерируется при попадании курсора мыши на элемент в окне.
onmouseup Генерируется при отпускании кнопки мыши.
onpaint Генерируется при отображении содержимого окна.
onreset Генерируется при инициализации формы в окне.
onresize Генерируется перед изменением размеров окна.
onscroll Генерируется при прокрутке содержимого окна.
onselect Генерируется, когда пользователь выделяет текст в текстовом поле.
onsubmit Генерируется при пересылке формы в окне.
onunload Генерируется перед завершением выгрузки документа.

Свойство _content

Синтаксис:  window._content
Изменяемое: нет

Значением свойства _content является указатель на фрейм или иной объект в окне, помеченный атрибутом type="content-primary". Если такого элемента нет, то возращается указатель на само окно window. Пример: следующий фрагмент HTML-документа выведет на экран текст blur.htm:

<BODY onload="alert(window._content.location.href)">
<IFRAME type="content-primary" src="blur.htm"></IFRAME>
. . .

Свойство appCore

Синтаксис:  window.appCore
Изменяемое: нет

Недокументированное свойство, возвращает объект с интерфейсом nsIBrowserInstance. О "прикладном ядре" см. Application Services/Application Core Внешняя ссылка.

Свойство closed

Синтаксис:  window.closed
Изменяемое: нет

Значением свойства closed является true, если окно window закрыто, и false, если нет. Пример:

if (!parent.closed)
  parent.close();

Свойство Components

Синтаксис:  window.Components
Изменяемое: нет

Значением свойства Components является коллекция всех компонентов, установленных в обозревателе. Пока недокументировано.

Свойство controllers

Синтаксис:  window.controllers
Изменяемое: нет

Значением свойства controllers является коллекция объектов типа XUL Controllers. Пока недокументировано.

Свойство crypto

Синтаксис:  window.crypto
Изменяемое: нет

Значением этого свойства является указатель на объект crypto, обеспечивающий шифрование данных. Пока недокументировано.

Свойство defaultStatus

Синтаксис:  window.defaultStatus
Изменяемое: да

Свойство defaultStatus возвращает или устанавливает текст сообщения, выводимый по умолчанию в строке состояния, которая расположена в нижней части окна обозревателя. Не следует путать его со свойством status, которое содержит текст, выводимый в строке состояния при возникновении определенных событий. Пример:

var d = new Date();
defaultStatus = "Сегодня: " + d.toLocaleDateString();

Свойство directories

Синтаксис:  window.directories
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий панели каталогов обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если панель видна, и false, если она скрыта). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.directories.visible = true;

Свойство document

Синтаксис:  window.document
Изменяемое: нет

Свойство document возвращает указатель на HTML-документ, открытый в данном окне. Пример: alert(window.document.title).

Свойство frames

Синтаксис:  window.frames
Изменяемое: нет

Свойство frames возвращает коллекцию всех объектов window, определенных документом, ассоциированным с данным окном. Иными словами:

  • Если тело документа заключено в элемент BODY, то коллекция содержит по одному окну для каждого элемента IFRAME в документе.
  • Если тело документа заключено в элемент FRAMESET, то коллекция содержит по одному окну для каждого элемента FRAME в документе.

Порядок окон в коллекции определяется порядком элементов FRAME/IFRAME в тексте документа. Пример:

var frm = window.parent.frames;
for (var i = 0; i < frm.length; i++) 
    alert(frm[i].name);

Свойство history

Синтаксис:  window.history
Изменяемое: нет

Значением свойства history является объект, содержащий информацию об узлах, посещенных пользователем в данном окне (история просмотра).

Этот объект имеет четыре свойства, доступных только для чтения:

Свойство Описание
current URI текущего документа. Требует привилегии UniversalBrowserRead.
length Количество объектов в коллекции
next URI следующего документа в истории. Требует привилегии UniversalBrowserRead.
previous URI предыдущего документа в истории. Требует привилегии UniversalBrowserRead.

и следующие методы:

Метод Описание
back(число?) Эквивалентен нажатию кнопки обозревателя Back заданное число раз. Если число опущено, то загружается предыдущий узел, т. е. back() эквивалентно go(-1). Попытка выхода за пределы истории игнорируется, и пользователь остается на текущей странице.
forward(число?) Эквивалентен нажатию кнопки обозревателя Forward заданное число раз. Если число опущено, то загружается следующий узел, т. е. forward() эквивалентно go(1). Попытка выхода за пределы истории игнорируется, и пользователь остается на текущей странице.
go(позиция) Загружает узел, заданный аргументом позиция. Если позиция — это число, то она задает положение узла в истории относительно текущей страницы. Если позиция — это строка, то она должна задавать полный или частичный URI уэла, содержащегося в истории. Если заданный узел не найден или сделана попытка выхода за пределы истории, то пользователь остается на текущей странице.

Пример чтения URI предыдущего документа в истории просмотра:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
alert(window.history.previous);

Свойство innerHeight

Синтаксис:  window.innerHeight
Изменяемое: да

Значением свойства innerHeight является высота клиентской области окна обозревателя. Пример: window.innerHeight = 400. Ср. со свойством outerHeight.

Свойство innerWidth

Синтаксис:  window.innerWidth
Изменяемое: да

Значением свойства innerWidth является ширина клиентской области окна обозревателя. Пример: window.innerWidth = 700. Ср. со свойством outerWidth.

Свойство length

Синтаксис:  window.length
Изменяемое: нет

Это свойство возвращает количество фреймов в данном окне, т. е. количество содержащихся в нем элементов FRAME и IFRAME.

Свойство location

Синтаксис:  window.location
Изменяемое: нет

Это свойство возвращает указатель на объект location, содержащий информацию об URI документа, открытого в данном окне. Напомним, что в общем виде URI имеет вид:

протокол://хост:порт/путь#закладка?запрос

Объект location содержит названные фрагменты URI как свойства, доступные для чтения и записи:

Свойство Описание
hash Закладка, т. е. часть URI, следующая за символом "#" (включая его).
host Если port не равно null, то эта строка имеет вид hostname:port, в противном случае совпадает с hostname.
hostname Имя хоста и домена или IP-адрес.
href Полный URI документа.
pathname Имя файла или пути.
port Номер порта, указанный в URI документа.
protocol Протокол, указанный в URI документа.
search Запрос, т. е. часть URI, следующая за символом "?" (включая его).

Кроме того, данный объект имеет два метода:

Метод Описание
reload(flag?) Перезагружает текущий документ. Аргумент указывает способ перезагрузки: true — перезагрузка с сервера, false — перезагрузка из кэш-памяти. Если аргумент опущен, то он принимается равным false.
replace(URI) Заменяет текущий документ на документ с заданным URI. При этом текущий документ удаляется из истории просмотра.

Мы можем обращаться к объекту location и как к строке, например window.location = "http://mywww.com/newpage.htm" приведет к загрузке документа с заданным URI. Такое обращение эквивалентно чтению или записи свойства location.href.

Свойство locationbar

Синтаксис:  window.locationbar
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий адресной строке обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если адресная строка видна, и false, если она скрыта). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.locationbar.visible = true;

Свойство menubar

Синтаксис:  window.menubar
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий меню обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если меню видно, и false, если оно скрыто). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.menubar.visible = true;

Свойство name

Синтаксис:  window.name
Изменяемое: нет

Это свойство позволяет считывать и устанавливать имя окна или фрейма. Его значение задается в формате имени фрейма HTML. Во избежание двусмысленности это свойство всегда следует использовать с префиксом window. Примеры:

window.name = "Window1";		// задание имени окна
parent.frames[0].name = "LetfFrame";	// задание имени фрейма
window.open("file.htm", "_blank");	// открытие документа в новом окне

Свойство navigator

Синтаксис:  window.navigator
Изменяемое: нет

Значением свойства navigator является объект, содержащий информацию об обозревателе. Он имеет следующие свойства, доступные только для чтения:

Свойство Описание
appCodeName Кодовое имя обозревателя. Всегда равно "Mozilla".
appName Название обозревателя. Всегда равно "Netscape".
appVersion Версия обозревателя и имя платформы, например,
"5.0 (Windows; en-US)".
language Язык пользовательского интерфейса обозревателя (см. Таблицу П8.1).
cookieEnabled true, если куки на стороне клиента разрешены, и false, если запрещены.
mimeTypes Возвращает коллекцию объектов типа MimeType, соответствующих типам MIME, поддерживаемых обозревателем. Каждый такой объект имеет следующие свойства:
description Описание типа, например "Acrobat (*.pdf)".
enabledPlugin    Указатель на соответствующий объект Plugin.
suffixes Расширения имен файлов этого типа, например "pdf".
type Тип MIME, например "application/pdf".
oscpu Операционная система клиента:
"HP-UX" HP Unix
"MacPPC"   Macintosh/PowerPC
"Mac68k" Macintosh/68000
"SunOS" Solaris
"Win95" Windows 95
"Win98" Windows 98
"WinNT" Windows NT/2000
platform Платформа клиента:
"HP-UX" HP Unix
"MacPPC"   Macintosh/PowerPC
"Mac68k" Macintosh/68000
"SunOS" Solaris
"Win16" 16-разрядная Windows
"Win32" 32-разрядная Windows
plugins Коллекция всех объектов Plugin, установленных в обозревателе. Объект Plugin описывает подключаемый модуль, который отображает файлы определенных типов. Он является массивом, содержащим по одному элементу для каждого поддерживаемого им типа. Он имеет следующие свойства:
description    Описание модуля, например "Netscape Navigator Plug-in for Acrobat.".
filename Полный путь доступа к файлу модуля на диске.
length Количество поддерживаемых типов MIME.
name Название модуля, например "Adobe Acrobat".

Кроме того, данная коллекция имеет метод refresh(flag), который обновляет массив установленных подгружаемых модулей. Если flag равно true, то все открытые документы будут перезагружены с учетом вновь установленных модулей.

product Название продукта. Всегда равно "Gecko".
productSub Номер сборки продукта, например "20001222".
securityPolicy Политика безопасности, недокументировано.
userAgent Информация об обозревателе в формате поля User-Agent заголовка запроса HTTP (см. Таблицу П5.2), например,
"Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010725 Netscape6/6.1".
vendor Название поставщика, например "Netscape6".
vendorSub Номер версии поставщика, например "6.1".

Кроме того, данный объект имеет следующие методы:

Метод Описание
javaEnabled() Возвращает true, если Java-аплеты в обозревателе разрешены, и false в противном случае.
preference(name, value?) Если аргумент value не задан, возвращает текущую настройку обозревателя с именем name (для этого требуется привилегия UniversalPreferencesRead). Если аргумент value задан, то настройка с именем name получает значение value и это значение возвращается в качестве результата (для этого требуется привилегия UniversalPreferencesWrite). Имена некоторых настроек (полный перечень в сценариях подкаталога DEFAULTS\PREF каталога, в котором установлены Netscape 6 или Mozilla):
"autoupdate.enabled" true = разрешить SmartUpdate, false = запретить
"browser.enable_style_sheets" true = разрешить таблицы стилей, false = запретить
"general.always_load_images" true = автоматически загружать графические образы, false = нет
"javascript.enabled" true = разрешить JavaScript, false = запретить
"network.cookie.cookieBehavior" 0 = разрешить все куки, 1 = разрешить только куки, посылаемые на тот же сервер, 2 = запретить куки
"network.cookie.warnAboutCookies"    true = предупреждать об обрашении к куки, false = нет
"security.enable_java" true = разрешить Java-аплеты, false = запретить
taintEnabled() Возвращает true, если в обозревателе разрешена защита данных (data tainting), и false в противном случае.

Свойство opener

Синтаксис:  window.opener
Изменяемое: да

Это свойство возвращает ссылку на объект window, создавший данное окно; если окно было открыто обозревателем, а не методом open, то его значение null. Мы можем присвоить этому свойству ссылку на любое окно.

Свойство outerHeight

Синтаксис:  window.outerHeight
Изменяемое: да

Значением свойства outerHeight является высота окна обозревателя. Пример: window.outerHeight = window.screen.availHeight. Ср. со свойством innerHeight.

Свойство outerWidth

Синтаксис:  window.outerWidth
Изменяемое: да

Значением свойства outerWidth является ширина окна обозревателя. Пример: window.outerWidth = window.screen.availWidth. Ср. со свойством innerWidth.

Свойство pageXOffset

Синтаксис:  window.pageXOffset
Изменяемое: да

Значением свойства pageXOffset является положение страницы по горизонтали в пикселях относительно верхнего левого угла клиентской области окна. Это свойство позволяет узнать текущее положение страницы, прокручиваемой горизонтально, перед вызовом метода scrollTo или scrollBy.

Свойство pageYOffset

Синтаксис:  window.pageYOffset
Изменяемое: да

Значением свойства pageYOffset является положение страницы по вертикали в пикселях относительно верхнего левого угла клиентской области окна. Это свойство позволяет узнать текущее положение страницы, прокручиваемой вертикально, перед вызовом метода scrollTo или scrollBy.

Свойство parent

Синтаксис:  window.parent
Изменяемое: нет

Это свойство возвращает ссылку на объект window, соответствующий отцу данного окна. Иными словами, для окна, созданного элементом FRAME, оно возвращает ссылку на окно, содержащее соответствующий элемент FRAMESET, а для остальных окон ссылку на самого себя (ср. свойство top). Пример: alert(parent.location).

Свойство personalbar

Синтаксис:  window.personalbar
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий панели личных ссылок обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если она видна, и false, если она скрыта). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.personalbar.visible = true;

Свойство pkcs11

Синтаксис:  window.pkcs11
Изменяемое: нет

Это свойство возвращает ссылку на объект pkcs11, который используется для установки драйверов и других программ, использующих протокол PKCS (Public-Key Cryptography Standard) #11. Этот стандарт разработан в RSA Laboratories для управления криптографическим шифрованием передаваемых данных. Подробнее см. Спецификацию PKCS #11 Внешняя ссылка и файл nsIDOMPkcs11.idl в исходных текстах Mozilla.

Свойство prompter

Синтаксис:  window.prompter
Изменяемое: нет

Это свойство возвращает ссылку на объект window, созданный методом prompt или null, если такого окна нет.

Свойство screen

Синтаксис:  window.screen
Изменяемое: нет

Значением свойства screen является объект, содержащий информацию об экране клиента. Он имеет следующие свойства:

Свойство Изменяемое Описание
availHeight Нет Высота рабочей области экрана в пикселях (исключая высоту панели задач). Для экрана 600x800 обычно равна от 570 до 600.
availLeft Нет Первый доступный слева пиксель экрана (availLeft + availWidth = width).
availTop Нет Первый доступный сверху пиксель экрана (availTop + availHeight = height).
availWidth Нет Ширина рабочей области экрана в пикселях (исключая ширину панели задач). Для экрана 600x800 обычно равна от 730 до 800.
colorDepth Нет Если используется цветовая палитра, то это свойство возвращает ее глубину в битах на пиксель. В противном случае совпадает с pixelDepth.
height Нет Высота экрана в пикселях. Например, для экрана 600x800 равна 600.
left Да Расстояние в пикселях от левого края клиентской области окна обозревателя до левого края экрана.
pixelDepth Нет Число битов на пиксель при отображении цветов. Типичные значения: 8 (256 цветов), 16 (High Color), 24 (True Color).
top Да Расстояние в пикселях от верхнего края клиентской области окна обозревателя до верхнего края экрана.
width Нет Ширина экрана в пикселях. Например, для экрана 600x800 равна 800.

Следующий пример

alert("Экран: "+screen.width+" x "+screen.height+" x "+screen.colorDepth +" бита");

выведет окно сообщения с текстом вида Экран: 800 x 600 x 24 бита.

Свойство screenX

Синтаксис:  window.screenX
Изменяемое: да

Значением свойства screenX является расстояние в пикселях от левой границы экрана до левой границы окна обозревателя. Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.screenX = 20;

Свойство screenY

Синтаксис:  window.screenY
Изменяемое: да

Значением свойства screenY является расстояние в пикселях от верхней границы экрана до верхней границы окна обозревателя. Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.screenY = 10;

Свойство scrollbars

Синтаксис:  window.scrollbars
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий полосам прокрутки обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если полосы прокрутки видны, и false, если они скрыты). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.scrollbars.visible = true;

Свойство scrollX

Синтаксис:  window.scrollX
Изменяемое: нет

Значением свойства scrollX является количество пикселей, на которое документ прокручен по горизонтали. Следующий пример прокручивает документ к его началу, если он был прокручен по горизонтали:

if (window.scrollX) scroll(0, 0);

Свойство scrollY

Синтаксис:  window.scrollY
Изменяемое: нет

Значением свойства scrollY является количество пикселей, на которое документ прокручен по вертикали. Следующий пример прокручивает документ к его началу, если он был прокручен по вертикали:

if (window.scrollY) scroll(0, 0);

Свойство self

Синтаксис:  window.self
Изменяемое: нет

Это свойство возвращает ссылку на текущий объект window, т. е. на самого себя.

Свойство sidebar

Синтаксис:  window.sidebar
Изменяемое: нет

Значением этого свойства является указатель на недокументированный объект с интерфейсом nsISidebar, соответствующий боковой панели обозревателя (его описание в Gecko DOM window Reference не соответствует действительности). Мы обнаружили, что этот объект лишен свойств, но имеет четыре метода:

Метод Описание
addPanel(panel) Недокументировано.
addSearchEngine(engineURI, iconURI, engineName, categoryName) Запрашивает подтверждение на доавление к боковой панели поисковой системы. Аргументы: engineURI — URI поисковой системы, iconURI — URI ее иконки, engineName — имя, которое будет присвоено поисковой системе, categoryName — название категории поиска.
QueryInterface(interfaceName) Недокументировано.
setWindow(windowFrame) Недокументировано.

Этот объект еще находится в стадии разработки, поэтому подробно мы опишем его позже. Пример добавления поисковой системы к боковой панели:

window.sidebar.addSearchEngine("http://www.mozilla.org/projects/search/mozilla.src",
  "http://www.mozilla.org/projects/search/mozilla.gif", "mozilla.org", "Web");

Свойство status

Синтаксис:  window.status
Изменяемое: да

Свойство status возвращает или устанавливает текст сообщения, выводимый в строке состояния, которая расположена в нижней части окна обозревателя. Не следует путать его со свойством defaultStatus, которое содержит текст, выводимый в строке состояния по умолчанию. Пример:

<BODY onload="window.status='Страница загружена!'">

Свойство statusbar

Синтаксис:  window.statusbar
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий строке состояния обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если строка состояния видна, и false, если она скрыта). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.statusbar.visible = true;

Свойство title

Синтаксис:  window.title
Изменяемое: да

Это свойство возвращает или задает заголовок окна. Если заголовок окна не был ранее задан, то оно возвращает undef. Текст заголовка хранится в данном свойстве, но нигде не отображается. Пример:

window.title = "Мое окно";
alert(window.title);

Свойство toolbar

Синтаксис:  window.toolbar
Изменяемое: нет

Значением этого свойства является указатель на объект barProp, соответствующий панели кнопок обозревателя. Этот объект имеет единственное свойство visible, доступное для чтения и записи и указывающее на состояние панели (true, если она видна, и false, если она скрыта). Для изменения этого свойства необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
window.toolbar.visible = true;

Свойство top

Синтаксис:  window.top
Изменяемое: нет

Это свойство возвращает ссылку на первое окно в иерархии объектов window, т. е. на объект, у которого свойство parent равно самому объекту.

Свойство window

Синтаксис:  window.window
Изменяемое: нет

Это свойство возвращает ссылку на текущий объект window, т. е. на самого себя (синоним свойства self).

Метод alert

Синтаксис: window.alert(текст?)
Аргументы: текст — строковое значение

Метод alert создает диалоговое окно сообщения и, если текст задан, выводит его в это окно. Например, оператор alert("Здравствуйте!") выведет на экран следующее окно:

Пример отображения окна сообщения

Метод back

Синтаксис: window.back()

Метод back эквивалентен нажатию кнопки обозревателя Back (Назад). Он возвращает нас на один шаг в истории просмотра самого верхнего окна в иерархии окон, в отличие от метода history.back(), который делает шаг назад в истории просмотра текущего окна или фрейма.

Метод blur

Синтаксис: window.blur()

Метод blur заставляет окно потерять фокус и генерирует событие onblur. Это программный эквивалент удалению пользователем фокуса с текущего окна.

Метод captureEvents

Синтаксис: window.captureEvents(Event.тип)
Аргументы: тип — тип события

Метод captureEvents включает перехват заданным окном всех событий заданного типа. Тип события задается одним из следующих ключевых слов, набранных в любом регистре:

abort error mousedown reset
blur focus mousemove resize
change keydown mouseout select
click keypress mouseover submit
dblclick keyup mouseup unload
dragdrop load move  

События обычно проходят через обработчики событий окна и документа прежде, чем попасть к обработчику объекта, сгенерировавшему это событие. Данный метод перехватывает все события указанного типа и не пропускает их к следующим объектам в иерархии. Для того, чтобы восстановить обычный порядок распространения событий, необходимо вызывать метод releaseEvents. Пример перехвата всех щелчков мышью в окне:

<HTML>
<HEAD>
<SCRIPT>
function reg() {
  window.captureEvents(Event.CLICK);
  window.onclick = new Function("alert('hit')");
}
</SCRIPT>
</HEAD>
<BODY onload="reg()">
<BUTTON>Test</BUTTON>
</BODY>
</HTML>

Мы можем задать в вызове этого метода сразу несколько типов событий, разделяя их символом "|", например:

window.captureEvents(Event.KEYPRESS | Event.KEYDOWN | Event.KEYUP);

Метод clearInterval

Синтаксис: window.clearInterval(таймер)
Аргументы: таймер — целое значение

Этот метод останавливает таймер, созданный методом setInterval. См. подробности и пример в описании этого метода.

Метод clearTimeout

Синтаксис: window.clearTimeout(таймер)
Аргументы: таймер — целое значение

Этот метод останавливает таймер, созданный методом setTimeout. См. подробности и пример в описании этого метода.

Метод close

Синтаксис: window.close()

Метод close закрывает заданное окно обозревателя. Если окно было создано программно, то оно просто закрывается. Если же окно было создано обозревателем, то перед его закрытием выводится диалоговое окно, запрашивающее подтверждение действия. Если, однако, в истории просмотра окна только один документ (текущий), то окно закрывается без запроса подтверждения. Такое решение было принято для поддержки временных окон, которые открывают другие окна, а затем закрываются. Для того, чтобы закрывать любое окно без подтверждения, необходима привилегия UniversalBrowserWrite. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
self.close();

В обработчиках событий нужно полностью указывать вызов window.close, иначе будет вызван неявно подразумеваемый метод document.close.

Метод confirm

Синтаксис: window.confirm(текст?)
Аргументы: текст — строковое значение
Результат: логическое значение

Метод confirm создает диалоговое окно подтверждения и, если текст задан, выводит его в это окно. Он возвращает true, если пользователь нажал кнопку OK, и false, если пользователь нажал кнопку Cancel. Например, оператор confirm("Отформатировать системный диск?") выведет на экран следующее окно:

Пример отображения окна подтверждения

Метод disableExternalCapture

Синтаксис: window.disableExternalCapture()

Этот метод запрещает перехват внешних событий, разрешенных методом enableExternalCapture. См. подробности в описании этого метода.

Метод dump

Синтаксис: window.dump(текст)
Аргументы: текст — строковое значение

Утверждается, что этот метод выводит заданный текст в консоль JavaScript обозревателя и предназначен для вывода отладочных сообщений. Мне этого добиться не удалось: метод выполнялся без ошибки, но в консоль не выводил ничего.

Метод enableExternalCapture

Синтаксис: window.enableExternalCapture()

Этот метод используется в окнах, содержащих фреймы, для того, чтобы разрешить данному окну перехват событий, сгенерированных фреймами, в которые загружены документы с других серверов. Для перехвата внешних событий какого-либо типа вам нужно получить привилегию UniversalBrowserWrite, вызвать этот метод, а затем вызвать метод captureEvents, задав ему тип перехватываемых событий. Пример:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
enableExternalCapture();
captureEvents(Event.CLICK);

Метод escape

Синтаксис: window.escape(строка)
Аргументы: строка — любое строковое выражение
Результат: новый строковый объект

Метод escape преобразует входную строку в шестнадцатеричную кодировку. При этом все символы, не являющиеся символами базовой латиницы, заменяются на их шестнадцатеричные escape-коды %xx в текущей кодировке операционной системы. Например, оператор document.write(escape("Строка")) выведет в русской версии Windows на экран обозревателя строку %D1%F2%F0%EE%EA%E0. Обратное преобразование строки производится методом unescape.

Обратите внимание, что этот метод перекрывает метод escape глобального объекта JavaScript, который кодирует символы шестнадцатеричными кодами Unicode.

Метод focus

Синтаксис: window.focus()

Метод focus заставляет окно получить фокус и генерирует событие onfocus. Учтите, что окно не может получить фокус, пока документ не будет полностью в него загружен.

Метод forward

Синтаксис: window.forward()

Метод forward эквивалентен нажатию кнопки обозревателя Forward (Вперед). Он переводит нас на один шаг вперед в истории просмотра самого верхнего окна в иерархии окон, в отличие от метода history.forward(), который делает шаг вперед в истории просмотра текущего окна или фрейма.

Метод GetAttention

Синтаксис: window.GetAttention()

Метод GetAttention вызвает мигание иконки обозревателя до тех пор, пока он не будет активизирован. В Windows и Linux мигает иконка в панели задач, в MacOS — в правом верхнем углу системной панели. Пример:

setTimeout("window.GetAttention()", 3000);

Метод getSelection

Синтаксис:  window.getSelection()

Этот метод возвращает указатель на недокументированный объект с интерфейсом nsISelection, соответствующий выделенному пользователем фрагменту документа. Если выбранный фрагмент является текстом, то возвращаемый объект автоматически преобразуется в строку. Пример:

alert(window.getSelection());

Метод home

Синтаксис: window.home()

Метод home загружает в окно домашнюю страницу пользователя, указанную в настройках обозревателя. Его вызов эквивалентен нажатию кнопки обозревателя Home (Домой).

Метод moveBy

Синтаксис: window.moveBy(x, y)
Аргументы: x, y — целые значения

Этот метод перемещает окно на x пикселей по горизонтали и y пикселей по вертикали. Пример: moveBy(10, -5).

Метод moveTo

Синтаксис: window.moveTo(x, y)
Аргументы: x, y — целые значения

Этот метод перемещает окно в положение, при котором его верхний левый угол отстоит от левого верхнего угла экрана на x пикселей по горизонтали и y пикселей по вертикали. Следующий пример задает размеры окна и центрирует его на экране:

var w = 200, h = 200;
resizeTo(w, h);
moveTo((screen.width-w)/2, (screen.height-h)/2);

Метод open

Синтаксис: window.open(uri, имя [, свойства?])
Аргументы: uri, имя, свойства — строковые значения
Результат: объект window

Метод open создает новое окно обозревателя и возвращает ссылку на него. Аргумент uri задает URI открываемого документа, аргумент имя — имя фрейма для нового окна, которое может использоваться в атрибуте target элементов A и FORM. Необязательный аргумент свойства представляет собой список свойств нового окна, разделенных запятыми. В нем мы можем задать следующие свойства:

Свойство Описание
copyhistory Копировать историю просмотра текущего окна.
dependent Создать окно, зависимое от родительского окна. Зависимые окна закрываются при закрытии родительского окна и не показываются в панели задач Windows.
directories Показывать панель каталогов обозревателя.
height Высота окна в пикселях.
location Показывать адресную строку обозревателя.
menubar Показывать меню обозревателя.
resizable Пользователь может изменять размеры окна.
screenX Расстояние в пикселях от левого края экрана по горизонтали.
screenY Расстояние в пикселях от верхнего края экрана по вертикали.
scrollbars Показывать полосы прокрутки окна.
status Показывать строку состояния обозревателя.
toolbar Показывать панель кнопок обозревателя.
width Ширина окна в пикселях.

Свойствам width, height, screenX и screenY должны быть присвоены числовые значения. Остальные свойства являются логическими; им можно присваивать значения yes или no (или, что то же самое, 1 или 0). Включение в список только имени свойства равносильно присвоению ему значения yes. Пример:

var newWin = window.open("test.htm", "win2", "toolbar,status=no,width=200,height=200");

Метод print

Синтаксис: window.print()

Метод print выводит содержимое данного окна или фрейма на печать.

Метод prompt

Синтаксис: window.prompt([текст?], [значение?])
Аргументы: текст, значение — строковые значения
Результат: строковое или целое значение

Метод prompt создает диалоговое окно, состоящее из строки сообщения и поля ввода. Если текст задан, он выводится в качестве сообщения. Значение задает начальное значение поля ввода;если оно опущено, то равно undefined, и поле ввода пусто. Например, оператор prompt("Введите ваше имя", "") выведет на экран следующее окно:

Пример отображения окна ввода

Если пользователь нажмет кнопку Cancel, то этот метод вернет значение null; если будет нажата кнопка OK, то метод вернет строковое или целое значение, введенное пользователем в поле ввода.

Метод releaseEvents

Синтаксис: window.releaseEvents(Event.тип)
Аргументы: тип — тип события

Метод releaseEvents отменяет перехват событий заданного типа, включенный методом captureEvents. См. подробности в описании этого метода. Пример:

window.releaseEvents(Event.KEYPRESS | Event.KEYDOWN | Event.KEYUP);

Метод resizeBy

Синтаксис: window.resizeBy(x, y)
Аргументы: x, y — целые значения

Этот метод изменяет размеры окна на x пикселей по горизонтали и y пикселей по вертикали. Пример: resizeBy(10, -5).

Метод resizeTo

Синтаксис: window.resizeTo(x, y)
Аргументы: x, y — целые значения

Этот метод задает новые размеры окна, равными x пикселей по горизонтали и y пикселей по вертикали. Пример см. в описании метода moveTo.

Метод routeEvent

Синтаксис: window.routeEvent(evt)
Аргументы: evt — объект типа Event
Результат: логическое значение

Этот метод пропускает перехваченное событие evt вниз по иерархии объектов. При этом событие передается следующему в иерархии за window объекту, у которого включен перехват данного типа событий. Подробно о механизме перехвата событий см. п. 4.11.1.2.

Метод scroll

Синтаксис: window.scroll(x, y)
Аргументы: x, y — целые значения

Это устаревший синоним метода scrollTo.

Метод scrollBy

Синтаксис: window.scrollBy(x, y)
Аргументы: x, y — целые значения

Этот метод прокручивает документ в окне на x пикселей по горизонтали и y пикселей по вертикали относительно текущей позиции документа в окне. Прокрутка производится только в том случае, когда новая позиция в окне не видна. Пример: scrollBy(10, -5).

Метод scrollByLines

Синтаксис: window.scrollByLines(n)
Аргументы: n — целое значение

Этот метод прокручивает документ в окне на n строк относительно текущей позиции документа в окне. Прокрутка производится только в том случае, когда новая позиция в окне не видна. Пример: scrollByLines(10).

Метод scrollByPages

Синтаксис: window.scrollByPages(n)
Аргументы: n — целое значение

Этот метод прокручивает документ в окне на n страниц относительно текущей позиции документа в окне. Прокрутка производится только в том случае, когда новая позиция в окне не видна. Пример: scrollByPages(-1).

Метод scrollTo

Синтаксис: window.scrollTo(x, y)
Аргументы: x, y — целые значения

Этот метод прокручивает документ в окне так, чтобы верхний левый угол окна отстоял от начала документа на x пикселей по горизонтали и y пикселей по вертикали. Прокрутка производится только в том случае, когда новая позиция в окне не видна. Пример: scrollTo(0, 20).

Метод setCursor

Синтаксис: window.setCursor(форма)
Аргументы: форма — строковое значение

Этот метод изменяет форму экранного курсора. Аргумент форма может принимать следующие значения:

"auto" Форма курсора определяется обозревателем в зависимости от содержимого элемента.
"crosshair" Перекрестье.
"default" Курсор операционной системы по умолчанию. В Windows это стрелка.
"help" Вопросительный знак, указывающий, что для данного элемента можно получить справку.
"move" Скрещенные стрелки, указывающие на то, что что-то должно переместиться.
"pointer" Кисть руки, указывающая на гиперссылку.
"*-resize" Стрелка, указывающая на сдвигаемую границу; * задает направление сдвига (n = север, s = юг, w = запад, e = восток, nw =северо-запад и т. п.).
"text" Указатель на редактируемый текст в форме буквы I.
"wait" Песочные часы, указывающие на то, что программа занята, и пользователь должен подождать.

Пример: setCursor("nw-resize").

Метод setInterval

Синтаксис: window.setInterval(выражение, интервал)
           window.setInterval(функция, интервал, арг1?, …, аргN?)
Аргументы: выражение — строковое значение
           функция — имя функции
           арг1, …, аргN — значения аргументов функции
           интервал — числовое значение
Результат: целое значение

Этот метод запускает выполнение определенного действия каждый раз, когда истечет интервал, заданный в миллисекундах. Действие задается либо строкой, содержащей выражение JavaScript, либо именем функции с необязательным набором аргументов. Метод возвращает целое значение (идентификатор таймера), которое может быть передано методу clearInterval для остановки данного таймера, т. е. прекращения периодического выполнения данного действия. Заданное действие будет выполняться до вызова clearInterval или до закрытия данного окна.

Следующий пример использует метод setInterval для вывода текущего времени в строке состояния обозревателя каждую секунду:

<HTML>
<HEAD>
<SCRIPT>
var timerID = null;

function stopclock() {
  if (timerID)
    clearInterval(timerID);
  timerID = null;
}
function startclock() {
  stopclock();
  timerID = setInterval(showtime, 1000); // или setInterval("showtime()", 1000)
}
function showtime() {
  window.status = (new Date()).toLocaleTimeString();
}
</SCRIPT>
</HEAD>
<BODY onload="startclock()">
</BODY>
</HTML>

Метод setTimeout

Синтаксис: window.setTimeout(выражение, интервал)
           window.setTimeout(функция, интервал, арг1?, …, аргN?)
Аргументы: выражение — строковое значение
           функция — имя функции
           арг1, …, аргN — значения аргументов функции
           интервал — числовое значение
Результат: целое значение

Этот метод вызывает разовое выполнение определенного действия, когда истечет интервал, заданный в миллисекундах. Действие задается либо строкой, содержащей выражение JavaScript, либо именем функции с необязательным набором аргументов. Метод возвращает целое значение (идентификатор таймера), которое может быть передано методу clearTimeout для остановки данного таймера, т. е. для отмены выполнения заданного действия. Действие будет выполнено по истечении заданного интервала времени, если до этого не будет вызван метод clearTimeout или закрыто данное окно.

Следующий пример использует метод setTimeout для вывода текущего времени в строке состояния обозревателя каждую секунду:

<HTML>
<HEAD>
<SCRIPT>
var timerID = null;

function stopclock() {
  if (timerID)
    clearInterval(timerID);
  timerID = null;
}
function startclock() {
  stopclock();
  showtime();
}
function showtime() {
  window.status = (new Date()).toLocaleTimeString();
  timerID = setTimeout(showtime, 1000); // или setTimeout("showtime()", 1000)
}
</SCRIPT>
</HEAD>
<BODY onload="startclock()">
</BODY>
</HTML>

Метод sizeToContent

Синтаксис: window.sizeToContent()

Метод sizeToContent изменяет размеры окна, так чтобы они соответствовали его содержимому.

Метод stop

Синтаксис: window.stop()

Метод stop прекращает загрузку текущего документа. Его вызов равносилен нажатию кнопки Stop (Остановить) на панели обозревателя.

Метод unescape

Синтаксис: window.unescape(строка)
Аргументы: строка — любое строковое выражение
Результат: новый строковый объект

Метод unescape преобразует строку из шестнадцатеричной кодировки текстовую. Формат исходной строки описан в методе escape. Например, в русской версии Windows оператор document.write(unescape("%D1%F2%F0%EE%EA%E0")) выведет на экран обозревателя текст Строка.

Обратите внимание, что этот метод перекрывает метод unescape глобального объекта JavaScript, который декодирует шестнадцатеричные коды Unicode.

Метод updateCommands

Синтаксис: window.updateCommands()

Этот метод пока не документирован.

Нестандартные события окна

close
Это событие генерируется перед закрытием окна.
  • bubbles: false;
  • cancelable: false;
  • контекст: нет.
dragdrop
Это событие генерируется, когда пользователь перетаскивает в окно обозревателя внешний объект, например, файл.
  • bubbles: true;
  • cancelable: true;
  • контекст: data (массив строк, содержащих URI перетащенных в окно объектов).
paint
Это событие генерируется при каждой перерисовке окна (первый раз после onload, а затем всякий раз, когда требуется перерисовка окна).
  • bubbles: false;
  • cancelable: false;
  • контекст: нет.