Данная
статья является, как бы, логическим продолжением предыдущей
статьи "Открытие нового окна браузера с помощью JavaScript",
с которой рекомендуем сначала ознакомиться, поскольку,
разобрав материал, изложенный в указанной статье, Вы довольно
легко сможете понять, как же организуются, эти самые,
самораскрывающиеся окна.
Организуются самораскрывающиеся окна довольно просто.
Для этого обрабатываются специальные события:
OnLoad и OnUnLoad. Первое возникает, когда страница полностью загрузилась
(или тогда, когда пользователь нажал кнопку Stop в браузере, но к этому
времени необходимый код был уже загружен). Второе событие возникает,
когда пользователь закрывает окно браузера с данным сайтом.
События OnLoad и OnUnLoad происходят также при обновлении страницы пользователем (Refresh).
Как правило, обработчики этих событий помещаются в открывающийся тег <body> и
могут там присутствовать вместе с другими атрибутами этого тега.
Рассмотрим пример:
<head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function new_window()
{
window.open('http://www.site.ru','newwin','top=15, left=20, menubar=0, toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, width=400, height=300');
}
// -->
</SCRIPT>
</head>
<body OnLoad="new_window()">
. . .
. . .
В данном примере при загрузке странички будет открыто еще одно окно
браузера, поскольку в теге body размещен обработчик события OnLoad, который
запускает на выполнение функцию new_window, которая и выполняет все необходимые действия.
Как Вы могли заметить, в ходе выполнения предыдущего
примера активным становится новое окно, то есть новому окну
передается фокус. А что необходимо сделать, если мы хотим открывать
новое окно браузера, как бы в фоновом режиме: чтобы новое окно открылось,
но активным, по-прежнему, оставалось основное окно браузера. В этом
случае мы должны передать фокус основному окну с помощью метода focus,
который применим, в том числе и к объекту window. Усовершенствуем
предыдущий пример:
<head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function new_window()
{
window.open('http://www.site.ru','newwin','top=15, left=20, menubar=0, toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, width=400, height=300');
}
// -->
</SCRIPT>
</head>
<body OnLoad="new_window(); window.focus()">
. . .
. . .
О чем мы говорили, было правильно реализовано, а секундное появление
нового окна в качестве активного неизбежно. Кстати, в обработчике
события OnLoad вместо window.focus() можно написать просто focus(),
это применимо и к window.open, поскольку для данного окна объект window является предопределенным
по умолчанию, так как объект сам window представляет собой окно или фрейм браузера.
P.S.
Самораскрывающиеся окна, по большей части, встречаются на
сайтах, мягко говоря, взрослой тематики и используются для раскрутки
аналогичных сайтов. Использование самораскрывающегося окна
даёт CTR близкий к 100%., поскольку независимо от желания пользователя,
он попадает на определенную страничку.
Следует помнить, что самораскрывающиеся
окна, как правило, нервируют пользователя, и иногда пользователь
сразу же стремится закрыть не только новое окно, открывшееся без его разрешения, даже не дожидаясь загрузки,
но и, запомнив виновника раздражения, не посещать этот сайт в дальнейшем.
Так что, прежде, Вы должны решить будет ли применение самораскрывающегося
окна оправданным, если "Да", то успешного использования.