Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Закрытие окна на JavaScript
Обычно, если новое окно было открыто с помощью JavaScript'а, пишется просто:
<a href="javascript:self.close()">закрыть окно</a>
Но тем самым мы нарушаем несколько условий - ссылки должны работать с отключённым JavaScript'ом и не должны сбивать с толку, если в текущее окно пользователь попал, например, с поисковой машины, минуя "родителя".
Поэтому я применяю обычно другой метод. Прежде всего, саму ссылку я называю, как правило, "вернуться в раздел" или же указываю в какой именно раздел (например, вернуться в раздел "услуги").
В HTML коде ссылка выглядит так:
<a href="/service/" onClick="return g(this.href)">вернуться в раздел "услуги"</a>
Как видите, при клике на ссылку вызывается функция g(this.href). Вот как она выглядит:
function g(url){
if (opener){
if (opener.closed)
window.open(url, "");
else if (opener.location.href.search(url) == -1)
opener.location.href = url;
self.close();
return false;
}
return true;
}
Функция проверяет несколько условий. Во-первых, существует ли родительское окно (opener). Другими словами, было ли окно открыто через JavaScript или же обычным способом.
После этого, если родитель жив-здоров, смотрим, не закрыт ли он (opener.closed). Если да, то мы открываем ссылку в простом новом окне (window.open(url, "")). Ежели родитель открыт, мы делаем ещё одну проверку - не поменял ли он свой адрес, т. е. не переходил ли пользователь на другую страницу (opener.location.href.search(url) == -1).
В итоге, после всех вложенных проверок, мы закрываем дочернее окно (self.close()) и возвращаем false, если всё-таки окно было открыто JavaScript'ом, или же возвращаем true, и позволяем ссылке на раздел открыться в текущем окне.
Автор: Шуркаев Александр Владимирович
Источник: Заметки HTML кодера
.
Прокомментировать/Отблагодарить