Закрытие окна на 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, и позволяем ссылке на раздел открыться в текущем окне.


Автор: Шуркаев Александр Владимирович
Теги:
Закрытие окна
Добавлено: 11 Июля 2018 19:49:53 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...