Глава 4.14. Отображение документов в Internet Explorer4.14.1. Окна Internet Explorer: объект windowОбъект window в Internet Explorer выполняет те же функции, что и в Gecko. Однако, здесь мы можем программно открывать новые окна (и, следовательно, создавать новые объекты window) с помощью методов open, showModalDialog и showModelessDialog.
Свойство clientInformationСинтаксис: window.clientInformation Изменяемое: нет Значением свойства clientInformation является объект, содержащий информацию об обозревателе. Он имеет следующие свойства, доступные только для чтения:
Кроме того, данный объект имеет два метода:
Пример использования clientInformation: следующая функция возвращает номер версии для Internet Explorer и 0 для остальных обозревателей function getMSIEVersion() { var ua = clientInformation.userAgent; var msie = ua.lastIndexOf("MSIE "); return (msie > 0) ? parseFloat(ua.substr(msie + 5)) : 0; } Свойство clipboardDataСинтаксис: window.clipboardData Изменяемое: нет Значением свойства clipboardData является объект, обеспечивающий доступ к системному буферу сохранения. Буфер сохранения в Windows поддерживает пять форматов хранения данных, которые в DHTML обозначаются так:
Этот объект не имеет свойств и поддерживает следующие методы:
Пример использования clipboardData для вырезания текста на Веб-странице и вставки его в другое место: <HTML> <META http-equiv="Content-Type" content="text/html; charset=windows-1251"> <HEAD> <SCRIPT> // Выделяем текст, который следует вырезать function selectText() { var r = document.body.createTextRange(); r.findText(divSource.innerText); r.select(); } // По умолчанию вырезание текста в IE запрещено. Следующая функция его разрешает. function enableCut() { event.returnValue = false; } // По умолчанию вставка из буфера в IE запрещена. Следующая функция его разрешает. function enablePaste() { event.returnValue = false; } // Вставляем текст из буфера сохранения и сбрасываем returnValue, // чтобы отменить реакцию обозревателя по умолчанию. function pasteText() { var r = document.selection.createRange(); r.text = clipboardData.getData("Text"); } </SCRIPT> </HEAD> <BODY onload="selectText()"> <DIV ID="divSource" onbeforecut="enableCut()">Вырежьте этот текст</DIV> <DIV onbeforepaste="enablePaste()" onpaste="pasteText()"> Вставьте текст сюда </DIV> </BODY> </HTML> Свойство closedСинтаксис: window.closed Изменяемое: нет Значением свойства closed является true, если окно window закрыто, и false, если нет. Пример: if (!parent.closed) parent.close(); Свойство defaultStatusСинтаксис: window.defaultStatus Изменяемое: да Свойство defaultStatus возвращает или устанавливает текст сообщения, выводимый по умолчанию в строке состояния, которая расположена в нижней части окна обозревателя. Не следует путать его со свойством status, которое содержит текст, выводимый в строке состояния при возникновении определенных событий. Пример: var d = new Date(); defaultStatus = "Сегодня: " + d.toLocaleDateString(); Свойство dialogArgumentsСинтаксис: window.dialogArguments Изменяемое: нет Этим свойством обладают только окна, созданные методом showModalDialog. Оно содержит аргументы модального диалога, переданные в вызове showModalDialog через параметр аргументы. Свойство dialogHeightСинтаксис: window.dialogHeight Изменяемое: да Этим свойством обладают только окна, созданные методами showModalDialog и showModelessDialog. Оно позволяет изменять или считывать высоту окна диалога, которая задается по правилам размеров CSS. Пример: window.showModalDialog("message.htm", "", "dialogTop:100px; dialogLeft:200px; dialogWidth:5cm; dialogHeight:10cm") Свойство dialogLeftСинтаксис: window.dialogLeft Изменяемое: да Этим свойством обладают только окна, созданные методами showModalDialog и showModelessDialog. Оно позволяет изменять или считывать смещение окна диалога от левого края экрана, которое задается по правилам размеров CSS. Пример см. в описании свойства dialogHeight. Свойство dialogTopСинтаксис: window.dialogTop Изменяемое: да Этим свойством обладают только окна, созданные методами showModalDialog и showModelessDialog. Оно позволяет изменять или считывать смещение окна диалога от верхнего края экрана, которое задается по правилам размеров CSS. Пример см. в описании свойства dialogHeight. Свойство dialogWidthСинтаксис: window.dialogWidth Изменяемое: да Этим свойством обладают только окна, созданные методами showModalDialog и showModelessDialog. Оно позволяет изменять или считывать ширину окна диалога, которая задается по правилам размеров CSS. Пример см. в описании свойства dialogHeight. Свойство documentСинтаксис: window.document Изменяемое: нет Это свойство возвращает указатель на объект document, соответствующий HTML-документу, открытому в данном окне. Свойство eventСинтаксис: window.event Изменяемое: нет Это свойство возвращает указатель на объект event, описывающий текущее событие. Этот объект доступен только во время обработки событий, и поэтому к нему можно обращаться только из обработчиков событий. Подробное описание этого объекта и примеры его использования приведены в п. 4.12.3. Свойство externalСинтаксис: window.external Изменяемое: нет Это свойство возвращает указатель на объект external, обеспечивающий доступ к внешним компонентам обозревателя. Объект external будет подробно описан в WDH+. Свойство frameElementСинтаксис: window.frameElement Изменяемое: нет Это свойство возвращает объект FRAME или IFRAME, в котором содержится данное окно. Если такого элемента нет, то возвращается null. Пример: var o = window.frameElement; if (o) o.src="newdoc.htm"; Свойство framesСинтаксис: window.frames Изменяемое: нет Это свойство возвращает указатель на коллекцию всех объектов window, определенных документом, ассоциированным с данным окном. Свойство historyСинтаксис: window.history Изменяемое: нет Значением свойства history является объект, содержащий информацию об узлах, посещенных пользователем (история просмотра). Этот объект имеет одно свойство, доступное только для чтения:
и следующие методы:
Свойство lengthСинтаксис: window.length Изменяемое: нет Это свойство возвращает количество фреймов в данном окне, т. е. количество содержащихся
в нем элементов FRAME и IFRAME.
Если значение этого свойства не равно нулю, то для доступа к соответствующим оконным объектам
можно использовать конструкцию Свойство locationСинтаксис: window.location Изменяемое: нет Это свойство возвращает указатель на объект location, содержащий информацию об URI документа, открытого в данном окне. Напомним, что в общем виде URI имеет вид: протокол://хост:порт/путь#закладка?запрос Объект location содержит названные фрагменты URI как свойства, доступные для чтения и записи:
Кроме того, данный объект имеет два метода:
Мы можем обращаться к объекту location и как к строке, например Свойство nameСинтаксис: window.name Изменяемое: нет Это свойство позволяет считывать и устанавливать имя окна или фрейма. Его значение задается в формате имени фрейма HTML. Во избежание двусмысленности это свойство всегда следует использовать с префиксом window. Примеры: window.name = "Window1"; // задание имени окна parent.frames[0].name = "LetfFrame"; // задание имени фрейма window.open("file.htm", "_blank"); // открытие документа в новом окне Свойство navigatorСинтаксис: window.navigator Изменяемое: нет Свойство navigator является синомимом свойства clientInformation, введенным для совместимости с обозревателями Netscape. Свойство offscreenBufferingСинтаксис: window.offscreenBuffering Изменяемое: да Свойство offscreenBuffering возвращает или устанавливает режим фоновой буферизации отображения Если этот режим включен, то отображение объектов производится в фоновом режиме, а затем сформированное изображение появляется на экране. Данное свойство может принимать следующие значения:
Пример: offscreenBuffering = true; // включить насильственную буферизацию Свойство openerСинтаксис: window.opener Изменяемое: да Это довольно своеобразное по реализации свойство. Изначально оно возвращает ссылку на объект window, создавший данное окно; если окно было открыто обозревателем, а не методом open, showModalDialog или showModelessDialog, то его значение undefined. Своеобразие состоит в том, что мы можем присвоить этому свойству не только ссылку на объект window, но и текстовую строку, и тогда оно будет возвращать в качестве результата эту строку. Поэтому перед использованием данного свойства рекомендуется проверять его тип, например: function getOpenerName() { if (typeof(window.opener) == "object") return window.opener.name; else return window.opener; } Свойство parentСинтаксис: window.parent Изменяемое: нет Это свойство возвращает ссылку на объект window, соответствующий отцу данного окна. Иными словами, для окна, созданного элементом FRAME, оно возвращает ссылку на окно, содержащее соответствующий элемент FRAMESET, а для остальных окон ссылку на самого себя (ср. свойство top). Пример: for (var i = 0; i < parent.length; i++) alert(parent[i].location); Свойство returnValueСинтаксис: window.returnValue Изменяемое: да Этим свойством обладают только окна, созданные методом showModalDialog. Оно позволяет считать или изменить значение, которое будет возвращено этим методом в качестве результата. Пример: <INPUT type="button" onclick="window.returnValue=1; window.close()" value="OK"> <INPUT type="button" onclick="window.returnValue=0; window.close()" value="Cancel"> Свойство screenСинтаксис: window.screen Изменяемое: нет Значением свойства screen является объект, содержащий информацию об экране клиента. Он имеет следующие свойства:
Следующий пример alert("Экран: "+screen.width+" x "+screen.height+" x "+screen.colorDepth +" бита"); выведет окно сообщения с текстом вида Экран: 800 x 600 x 24 бита. Свойство screenLeftСинтаксис: window.screenLeft Изменяемое: нет Значением свойства screenLeft является расстояние в пикселях от левого края клиентской области окна обозревателя до левого края экрана. Свойство screenTopСинтаксис: window.screenTop Изменяемое: нет Значением свойства screenTop является расстояние в пикселях от верхнего края клиентской области окна обозревателя до верхнего края экрана. Свойство selfСинтаксис: window.self Изменяемое: нет Это свойство возвращает ссылку на текущий объект window, т. е. на самого себя. Свойство statusСинтаксис: window.status Изменяемое: да Свойство status возвращает или устанавливает текст сообщения, выводимый в строке состояния, которая расположена в нижней части окна обозревателя. Не следует путать его со свойством defaultStatus, которое содержит текст, выводимый в строке состояния по умолчанию. Пример: <BODY onload="window.status='Страница загружена!'"> Свойство topСинтаксис: window.top Изменяемое: нет Это свойство возвращает ссылку на первое окно в иерархии объектов window, т. е. на объект, у которого свойство parent равно самому объекту. Свойство windowСинтаксис: window.window Изменяемое: нет Это свойство возвращает ссылку на текущий объект window, т. е. на самого себя (синоним свойства self). Метод alertСинтаксис: window.alert(текст?) Аргументы: текст строковое значение Метод alert создает диалоговое окно сообщения и, если текст задан, выводит его в это
окно. Например, оператор Метод attachEventСинтаксис: window.attachEvent(событие, функция) Аргументы: событие строковое значение функция имя функции JavaScript Результат: логическое значение Этот метод присоединяет к стандартному событию DHTML заданную функцию. Он возвращает true, если функция успешно присоединена, и false в противном случае. Присоединение функции к событию состоит в следующем: когда происходит заданное событие, вызывается его обработчик, а после завершения работы обработчика события вызываются все функции, присоединенные к данному событию, причем в произвольном порядке. Хотя данный метод применим в обычных сценариях, его основное назначение состоит в присоединении к событиям реакций. При этом реакция, присоединенная к событию методом attachEvent, должна явно вызывать метод detachEvent для отсоединения от данной страницы при генерации события ondetach. Реакция, присоединенная к событиям страницы через HTC-элемент ATTACH, автоматически прекращает получать извещения о событиях, когда реакция отсоединяется от элемента, поэтому в этом случае вызывать detachEvent не нужно. Пример использования этого метода см. в п. 4.12.2. Метод blurСинтаксис: window.blur() Метод blur заставляет окно потерять фокус и генерирует событие onblur. Это программный эквивалент удалению пользователем фокуса с текущего окна. Метод clearIntervalСинтаксис: window.clearInterval(таймер) Аргументы: таймер целое значение Этот метод останавливает таймер, созданный методом setInterval. См. подробности и пример в описании этого метода.
Метод clearTimeoutСинтаксис: window.clearTimeout(таймер) Аргументы: таймер целое значение Этот метод останавливает таймер, созданный методом setTimeout. См. подробности и пример в описании этого метода.
Метод closeСинтаксис: window.close() Метод close закрывает окно обозревателя. Если окно было создано программно, то оно просто закрывается. Если же окно было создано обозревателем или если это единственное открытое окно обозревателя, то перед его закрытием выводится диалоговое окно, запрашивающее подтверждение действия. Если метод close вызывается из обработчика событий элемента BODY, то подразумевается метод window.close. Если же он вызывается из объекта event элемента BODY, то подразумевается метод document.close. Метод confirmСинтаксис: window.confirm(текст?) Аргументы: текст строковое значение Результат: логическое значение Метод confirm создает диалоговое окно подтверждения и, если текст задан, выводит его в это
окно. Он возвращает true, если пользователь нажал кнопку OK, и false, если
пользователь нажал кнопку Cancel. Например, оператор Метод createPopupСинтаксис: window.createPopup() Результат: объект window Метод createPopup создает всплывающее окно (popup window) и возвращает указатель на него. Всплывающее окно первоначально находится в скрытом состоянии; для его показа нужно вызвать метод show(x, y, width, height, elem?). Здесь x и y задают координаты левого верхнего угла всплывающего окна, width и height его высоту и ширину, а elem необязательный объект, относительного которого задаются перечисленные координаты (если он не указан, то координаты вычисляются относительно системной области экрана). Пример: var oPopup = window.createPopup(); var oBody = oPopup.document.body; oBody.style.backgroundColor = "lightyellow"; oBody.style.border = "solid black 1px"; oBody.innerHTML = "Щелкните вне окна, чтобы его закрыть."; oPopup.show(100, 100, 300, 25, document.body); Метод detachEventСинтаксис: window.detachEvent(событие, функция) Аргументы: событие строковое значение функция имя функции JavaScript Этот метод отсоединяет от стандартного события DHTML заданную функцию, ранее присоединенную к нему методом attachEvent. Хотя он применим в обычных сценариях, его основное назначение состоит в отсоединении от событий реакций. При этом реакция, присоединенная к событию методом attachEvent, должна явно вызывать метод detachEvent для отсоединения от данной страницы при генерации события ondetach. Реакция, присоединенная к событиям страницы через HTC-элемент ATTACH, автоматически прекращает получать извещения о событиях, когда реакция отсоединяется от элемента, поэтому в этом случае вызывать detachEvent не нужно. Пример использования этого метода см. в п. 4.12.2. Метод execScriptСинтаксис: window.execScript(выражение [,язык]?) Аргументы: выражение, язык строковые значения Этот метод выполняет сценарий, заданный выражением. Язык задает имя сценарного языка; по умолчанию он равен "JScript". Пример: function execute(handler) { switch (typeof(handler)) { case "string": execScript(handler); break; case "function": handler(); break; } } execute("alert('Проверка')"); Метод focusСинтаксис: window.focus() Метод focus заставляет окно получить фокус и генерирует событие onfocus. Учтите, что окно не может получить фокус, пока документ не будет полностью в него загружен. Метод moveByСинтаксис: window.moveBy(x, y) Аргументы: x, y целые значения Этот метод перемещает окно на x пикселей по горизонтали и y пикселей по вертикали.
Пример: Метод 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); Метод navigateСинтаксис: window.navigate(URI) Аргументы: URI строковое значение Метод navigate загружает в окно ресурс с заданным URI. Пример: Метод openСинтаксис: window.open(uri, имя [, свойства?][, флаг?]) Аргументы: uri, имя, свойства строковые значения флаг логическое значение Результат: объект window Метод open создает новое окно обозревателя и возвращает ссылку на него. Аргумент uri задает URI открываемого документа, аргумент имя имя фрейма для нового окна, которое может использоваться в атрибуте target элементов A и FORM. Необязательный аргумент флаг указывает, нужно ли создавать для новой Веб-страницы отдельную запись в истории просмотра. Если он равен true, то новая запись не создается; вместо этого новая страница замещает в истории текущую. Необязательный аргумент свойства представляет собой список свойств нового окна, разделенных запятыми. В нем мы можем задать следующие свойства:
Свойствам width, height, left и top должны быть присвоены числовые значения. Остальные свойства являются логическими; им можно присваивать значения 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, и поле ввода пусто.
Например, оператор Если пользователь нажмет кнопку Cancel, то этот метод вернет значение null; если будет нажата кнопка OK, то метод вернет строковое или целое значение, введенное пользователем в поле ввода. Метод resizeByСинтаксис: window.resizeBy(x, y) Аргументы: x, y целые значения Этот метод изменяет размеры окна на x пикселей по горизонтали и y пикселей по вертикали.
Пример: Метод resizeToСинтаксис: window.resizeTo(ширина, высота) Аргументы: ширина, высота целые значения Этот метод задает новые размеры окна в пикселях, равными ширине по горизонтали и высоте по вертикали.
Пример: Метод scrollСинтаксис: window.scroll(x, y) Аргументы: x, y целые значения Это устаревший синоним метода scrollTo. Метод scrollByСинтаксис: window.scrollBy(x, y) Аргументы: x, y целые значения Этот метод прокручивает документ в окне на x пикселей по горизонтали и y пикселей по вертикали относительно
текущей позиции документа в окне. Прокрутка производится только в том случае, когда новая позиция в окне не видна.
Пример: Метод scrollToСинтаксис: window.scrollTo(x, y) Аргументы: x, y целые значения Этот метод прокручивает документ в окне так, чтобы верхний левый угол окна отстоял от начала документа
на x пикселей по горизонтали и y пикселей по вертикали. Прокрутка производится только
в том случае, когда новая позиция в окне не видна. Пример: Метод setActiveСинтаксис: window.setActive() Этот метод делает окно текущим, не помещая на него фокус. Метод 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> Метод showHelpСинтаксис: window.showHelp(URI, контекст?) Аргументы: URI строковое значение контекст строковое или числовое значение Этот метод открывает в новом окне справочный файл, заданный URI. Необязательный аргумент контекст
задает идентификатор контекста искомой справки в справочном файле. Поддерживаются только файлы с расширениями .htm и .chm
(формата HTMLHelp). Пример: Метод showModalDialogСинтаксис: window.showModalDialog(uri [, аргументы?][, свойства?]) Аргументы: uri, имя, аргументы, свойства строковые значения аргументы значение произвольного типа Результат: определяется новым окном Метод showModalDialog создает новое окно модального диалога. Аргумент uri задает URI открываемого документа, необязательный параметр аргументы используется для передачи новому окну значения любого типа; это значение может быть извлечено в диалоговом окне через свойство dialogArguments. Необязательный аргумент свойства представляет собой список свойств нового окна вида свойство:значение, разделенных точками с запятой. В нем мы можем задать следующие свойства:
Свойства center, dialogHide, help, resizable, scroll, status и unadorned являются логическими; им можно присваивать значения yes или no (или, что то же самое, on или off, 1 или 0). Значением этого метода является значение свойства returnValue, установленное в окне диалога. Пример создания модального диалога: window.showModalDialog("dialog.htm", "", "dialogHeight:100; dialogWidth:100; resizable:yes; edge:sunken"); Метод showModelessDialogСинтаксис: window.showModelessDialogg(uri [, аргументы?][, свойства?]) Аргументы: uri, имя, аргументы, свойства строковые значения аргументы значение произвольного типа Результат: определяется новым окном Метод showModelessDialog создает новое окно немодального диалога. Немодальный диалог отличается от модального тем, что не закрывая его, мы можем переключиться в родительское окно. Аргумент uri задает URI открываемого документа, необязательный параметр аргументы используется для передачи новому окну значения любого типа; это значение может быть извлечено в диалоговом окне через свойство dialogArguments. Необязательный аргумент свойства представляет собой список свойств нового окна вида свойство:значение, разделенных точками с запятой. В нем мы можем задать следующие свойства:
Свойства center, dialogHide, help, resizable, scroll, status и unadorned являются логическими; им можно присваивать значения yes или no (или, что то же самое, on или off, 1 или 0). Значением этого метода является значение свойства returnValue, установленное в окне диалога. Пример создания немодального диалога: window.showModelessDialog("dialog.htm", "", "dialogHeight:100; dialogWidth:100; resizable:yes; edge:sunken"); |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||