Поведение клика - Разница в IE и FF? - PullRequest
1 голос
/ 28 марта 2010

Я только что пришел к выводу, что проект, над которым я сейчас работаю, может иметь «логическую» ошибку в функциональности.

В настоящее время я использую серверные технологии с PHP / MySQL и JQuery. На странице есть обычная ссылка с тегом

<a href="contentpage?page=xxx">next step</a>

Кажется, что болевая точка - это заданное событие jquery click для того же элемента. Намерение состояло в том, чтобы сохранить (текущее) содержимое страницы (-> элементы формы) через другой скрипт php с помощью команды php session. По любой причине IE может обработать событие click Jquery непосредственно перед выполнением стандартной команды html, которая снова загружает текущую страницу с новым параметром страницы. С помощью FF поведение отличается. Я предполагаю, что FF сначала выполняет команду html, а затем выполняет код javascript, который обрабатывает событие click. Поэтому набор результатов здесь неправильный соответственно пустой.

Мой вопрос сейчас заключается в том, сделал ли вы такой же опыт, и как вы справились с этой проблемой.

Буду благодарен за любые ваши советы или дальнейшие отзывы. Возможно, у вас также есть решение о том, как переосмыслить текущую архитектуру.

С уважением, Oliver

Ответы [ 2 ]

1 голос
/ 29 марта 2010

На самом деле Firefox вызывает событие и выполняет команду, которая прикреплена к нему, прежде чем гиперссылка выполнит действие перенаправления, возможно, произошла ошибка при выполнении команды, и IE позволил ей завершить свое действие, в то время как Firefox выдает ошибку и функцию jQuery Блок обработал его, что вы не заметите, исключение было брошено. создайте кнопку тестирования с классическим событием onclick и проверьте свою функцию и посмотрите, работает ли она, вероятно, в firefox

0 голосов
/ 29 марта 2010

Если я вас правильно понял, вы назначаете для ссылки событие click, оставляя href на месте и готовый к выстрелу. Это очень неразумно, так как время, оставшееся для выполнения любого javascript в событии click, когда пользователь щелкает ссылку, ограничено и произвольно. Вполне может быть, что разные браузеры по-разному справляются с этим - в любом случае, это неправильный подход. Вы никогда не можете быть уверены, что ваши действия будут выполнены полностью.

Обычный подход состоит в том, чтобы иметь событие click return false, предотвращающее действие по умолчанию для ссылки на запуск, и делать расслабленный location.href = this.href, когда все сделано.

Если вы используете Ajax для отправки некоторых данных, поместите часть location.href в обратный вызов success вашего вызова Ajax. Таким образом, вы можете быть на 100% уверены, что данные отправлены.

...