Есть ли событие jQuery, когда страница меняется? - PullRequest
4 голосов
/ 02 ноября 2011

Я новичок в Jquery и пытаюсь привыкнуть к нему.Есть ли какое-либо событие, которое я могу привязать к странице, чтобы остановить таймер ползунка?

Что я хочу сделать, это когда я изменил страницу или перешел на другую вкладку, я хочу перехватить это событие.Есть ли какое-либо событие или слушатель для этой системы?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Я бы пошел с onbeforeunload вместо unload, чтобы дать вам максимальное время. Однако, если вы планируете сделать запрос обратно на сервер в это время (или сделать что-то асинхронное), вы можете оказаться в состоянии гонки, когда иногда запрос проходит, а иногда нет.

Это происходит потому, что страница перестает обрабатывать ваш запрос (или другое асинхронное действие), когда она выгружается. Это может быть практически сразу в современных браузерах и довольно быстро в старых IE. Из-за этого очень редко имеет смысл делать что-либо в любом из событий unload или beforeunload.

Если вы пытаетесь передать информацию о таймере на следующий URL, вы можете просто изменить URL при нажатии на них.

$('a').click(function(){ this.href=this.href + "#timer=" + timerVar; });

Затем, когда вы перейдете на следующую страницу, вы можете прочитать это последнее значение из URL.

Google Analytics решает эту проблему, добавляя задержку ко всем ссылкам:

$('a').click(function(){
  var that = this;
  setTimeout(function(){
    window.location=that.href;
  },100); 
  return false;
});

Это просто дает вашей странице дополнительное время для перехода по ссылкам. Это не надежно, но это не имеет значения для Google, так как аналитика несколько преходящая (и они также используют параметры URL для других более важных вопросов (например, кампаний)).

1 голос
/ 02 ноября 2011

Посмотрите на это: http://api.jquery.com/unload/

0 голосов
/ 02 ноября 2011

http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/ этот блог должен помочь вам в этом ..

...