Яндекс.Метрика
  
Загружается... Ждите...

Разумеется, пользователю не представляет труда просто закрыть окно, нажав на соответствующую кнопку вверху окна или же сочетанием клавиш Alt-F4 (для Windows систем). Однако чаще всего, в угоду пользователям, разработчики указывают на странице некую ссылку «закрыть окно».

Обычно, если новое окно было открыто с помощью JavaScript'а, пишется просто:

<a href="javascript:self.close()">закрыть окно</a>

Но тем самым мы нарушаем несколько условий — ссылки должны работать с отключённым JavaScript'ом и не должны сбивать с толку, если в текущее окно пользователь попал, например, с поисковой машины, минуя «родителя».

Поэтому я применяю обычно другой метод. Прежде всего, саму ссылку я называю, как правило, «вернуться в раздел» или же указываю в какой именно раздел (например, «вернуться в раздел „услуги"»).

В HTML коде ссылка выглядит так:

<a href="/services/" onClick="return g(this.href)">вернуться в&nbsp;раздел</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, и позволяем ссылке на раздел открыться в текущем окне.

Tags: false, родительское окно, Javascript, Alt-F4, окно, javascript:self.close(), HTML, g(this.href), закрыть окно
Views: 1175 | Added: 11.06.2010 в 22:36 | Banner: О вёрстке

Comments
Total Comments: 0
Имя *:
Email:
Код *: