При работе с фреймами и окнами в предыдущих версиях
JavaScript постоянно приходилось отслеживать последовательность
открытия окон и фреймов, для того, чтобы аккуратно их потом закрывать.
На некоторых неточностях работы с окнами были основаны так называемые
mail-bombs. Суть этих "подарков" заключалась в том, что если
пользователь по почте принимает документ, который состоит только из
одной команды:
window.close() то система не спрашивая пользователя закрывала
текущее окно, а в этот момент таким окном является окно электронной
почты. Теперь, перед тем как что-либо закрыть, система будет спрашивать
разрешения. Правда, опять не всегда. Если в момент получения команды на
закрытие окна на экране только одно окно Navgator, то система его
закроет без каких-либо комментариев.
Однако, работа с окнами и фреймами на этом не
исчерпывается. Во-первых, в систему введено новое свойство opener,
которое определено для текущего окна или фрейма, и методы blur и focus
распространены на работу с окнами. Свойство opener определяет окно
документа, который вызвал открытие окна текущего документа. Свойство
определено для любого окна и фрейма. Необходимо выполнить некоторые
функции по отношению к окну, открывшему данное окно, и можно
использовать выражение типа:
window.opener.[method] Например, если требуется закрыть окно-предшественник, то можно просто выполнить метод close:
window.opener.close() Точно таким же способом можно изменить содержание
этого окна при помощи методов write или writeln. Можно менять и другие
свойства объектов в окне предшественнике. Следующий пример взят из
дополнений к спецификации JavaScript:
window.opener.document.bgColor='cyan' В данном случае для окна предшественника определен
светло голубой цвет в качестве цвета фона. Но самым замечательным
является то, что предшественника можно менять. Это значит, что автор
получает возможность открывать и закрывать окна не строго иерархической
последовательности, а в произвольном порядке. Управление многооконным
интерфейсом в этом случае становится более гибким:
window.opener= new_window window.opener = null Первый пример переназначает для текущего окна
окно-предшественник, в то время как второй вообще защищает
предшественника от каких-либо действий. Все, что было сказано об окнах,
распространяется и на фреймы, которые являются просто частным случаем
окна. При работе с фреймами часто фрейм может быть порожден путем
разбиения другого фрейма на части. Если при этом потребуется обратиться
к окну-предшественнику фрейма-предшественника, то свойство opener в
этом случае незаменимо. Разработчики языка следуют за пожеланиями
авторов Websit'ов и практикой применения JavaScrip, которая на
начальной стадии разработки языка не была столь очевидной. Кроме
обращения к различным свойствам окон и фреймов разработчики расширили
действие методов blur и focus с фреймов до окон. Теперь не только
фрейм, но и окно может быть сделано текущем с использованием метода
focus или, наоборот, переведено в фон при помощи метода blur. В ряде
случаев, при порождении нескольких страниц, например, обращение к этим
функциям бывает довольно полезным.
Назад | Содержание | Вперед |