Закрыть окно, используя ссылку или набрав URL? - PullRequest
0 голосов
/ 11 февраля 2012

Существует очень простая проблема, я не нашел решения, которое бы ее решило. Есть ли способ различать :

  1. выход из окна браузера (вкладка) по ссылке
  2. набрав другой URL в строке URL в браузере
  3. закрытие вкладка или окно браузера

Мне нужно связать другой код Javascript для этих действий. Я знаю, что могу отфильтровать все ссылки, установив для них специальный класс, но работает ли вообще что-нибудь?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Вы не можете обнаружить внешние события браузера, такие как нажатие пользователем кнопки закрытия браузера или выбор выхода из меню, или ввод нового URL в адресной строке.

Однако вы можете использовать событие onbeforeunload в ваших интересах, чтобы что-то сделать:

window.onbeforeunload = function(){
  // do something
};

Это сработает, когда пользователь перейдет на другую страницу, щелкнув ссылку на страницу, закрыв браузер или оставив текущую страницу любым способом.

1 голос
/ 11 февраля 2012

Вы не можете различить ввод нового URL-адреса или закрытие окна, но вы можете добавить обработчик события щелчка ко всем ссылкам, чтобы проверить, собирается ли пользователь уйти, используя ссылку:

var links = document.getElementsByTagName("a")​;
for(var i = 0; i < links.length; i++) {
    links[i].onclick = function() {
        if (this.href.test(/^http[s]?:\/\//))
            //external link clicked
    };
}

Для остальных вы можете использовать window.onbeforeunload (обратите внимание, что это событие также будет обрабатывать внешние ссылки, поэтому будьте осторожны, чтобы не обрабатывать их дважды, если вы используете предыдущее решение).

...