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