В моем 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
чтобы изменить страницу, и это прекрасно работает для меня.