Добавляем...


Особенности взаимодействия окон
Если приложение допускает одновременное существование нескольких окон, очень важно понимать основы взаимодействия окон. Обычно мы получаем доступ к методам и свойствам исходного окна, используя экземпляр объекта, называемый просто window, или даже опуская ссылку на него. Но если требуется получить доступ к другому окну, придется использовать имя этого окна. Например, если имеется окно mywindow, то для записи в него мы должны использовать my.window.document.write. Ключом к взаимодействию между окнами является имя окна и использование этого имени в ссылках вместо имени базового объекта window. Tyт, конечно, возникает важный вопрос: как ссылаться на главное окно из созданного окна?. Чаще всего для этого используют свойство window.opener, которое ссылается на объект Window, создавший текущее окно. Следующий простой пример показывает, как одно окно создает другое и как каждое из имеющихся окон может установить цвет фона другого.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Тестирование окон</title>
<meta http-equiv="content-type" content="text/html; " />
<script type="text/javascript">
<!--
function createWindow()
{
secondwindow = window.open('','example','height=300,width=200,scrollbars=yes');
if (secondwindow != null)
{
var windowHTML= "<html><head><title>Второе окно</title></head>";
windowHTML += "<body><h1 align='center'>";windowHTML += "Другое окно!</h1><hr><div align='center'><form action='#' method='get'>";
windowHTML += "<input type='button' value='Сделать красным главное' onclick='window.opener.document.bgColor=\"red\";' />";
windowHTML += "<br><input type='button' value='ЗАКРЫТЬ ОКНО' onclick='self.close();' />";
windowHTML += "</form></div></body></html>";
secondwindow.document.write(windowHTML);
secondwindow.focus();
}
}
//-->
</script>
</head>
<body>
<form action="#" method="get">
<input type="button" value="Новое окно" onclick="createWindow();" />
<input type="button" value="Сделать красным" onclick="if (window.secondwindow)
{secondwindow.document.bgColor='red';secondwindow.focus();}" />
</form>
</body>
</html>

Теперь, когда вы знаете, как управлять обменом данными между окнами, снова обращаем ваше внимание на некоторые важные моменты. Во-первых, избегайте использования document.write() во вторичных окнах, если только вы не планируете переписать все содержимое в таком окне. Для изменения содержимого на месте следует использовать методы DOM или фирменные объекты типа document.all[ ]. Во-вторых, не создавайте слишком много порожденных окон; создание окна должно иметь четкую и ясную цель. Посетители вашего узла скорее всего не захотят посещать его снова, если узел порождает много окон и раздражающей всплывающей рекламы; кроме того, установки браузера посетителя или специальное программное обеспечение могут вообще блокировать появление порожденных окон. Наконец, следует понимать политику безопасности JavaScript и ее связь с окнами. Политика безопасности предполагает, что вы не можете иметь доступ к окнам, которые не являются локальными по отношению к вашему узлу, но и другие узлы не должны иметь доступа к вашим окнам. Проблема обеспечения безопасности при использовании JavaScript достаточно сложна.
назад: далее: Перемещение окон


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика