У меня есть таймер в моем JavaScript, который должен эмулировать щелчок по ссылке, чтобы перейти на другую страницу по истечении времени. Для этого я использую функцию jQuery click()
. Я также использовал $().trigger()
и window.location
, и я могу заставить его работать по назначению со всеми тремя.
Я наблюдал какое-то странное поведение с click()
, и я пытаюсь понять, что происходит и почему.
Я использую Firefox для всего, что я описываю в этом вопросе, но меня также интересует, что другие браузеры будут делать с этим.
Если я не использовал $('a').bind('click',fn)
или $('a').click(fn)
для установки обработчика событий, то вызов $('a').click()
кажется вообще недействительным. Он не вызывает обработчик по умолчанию для браузера для этого события, так как браузер не загружает новую страницу.
Однако, если я сначала устанавливаю обработчик событий, он работает так, как ожидалось, даже если обработчик событий ничего не делает.
$('a').click(function(){return true;}).click();
Это загружает новую страницу, как если бы я щелкнул сам.
Итак, мой вопрос двоякий: это странное поведение, потому что я что-то делаю неправильно? и почему вызов click()
ничего не делает с поведением по умолчанию, если я не создал обработчик моего собственного?
EDIT:
Как выяснил Хоффман, когда он пытался дублировать мои результаты, результат, описанный выше, на самом деле не происходит. Я не уверен, что вызвало события, которые я наблюдал вчера, но сегодня я уверен, что это не то, что я описал в вопросе.
Итак, ответ заключается в том, что вы не можете "подделывать" клики в браузере и что все jQuery - это вызов обработчика событий. Вы можете использовать window.location
для изменения страницы, и это отлично работает для меня.