У моєму 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
для зміни сторінки, і це для мене добре працює.