Оповещение в jquery клик не останавливается отправить - PullRequest
1 голос
/ 20 апреля 2011

у меня

<input onclick="__doPostBack">

и

$(function(){ 
    $('input').click(function(){ alert('hey') }) 
});

В Chrome, например, я вижу предупреждение, и когда нажимаю "ОК", браузер отправляет. В FF4 я вижу на milisec предупреждение, и браузер отправляет, не дожидаясь, пока я нажму "ОК".

Вопрос: что случилось? В FF4 появились новые асинхронные события?

Это не только проблема оповещения, не работает и предотвращение дефолта.

Ответы [ 4 ]

1 голос
/ 20 апреля 2011

Ну, мы никогда не должны были зависеть от таких событий, как alert() или comfirm(), чтобы фактически остановить выполнение кода, так сложилось, что большинство браузеров делали это именно так.

При этом я не знаю, почему это происходит в FF4, но я предполагаю, что событие отправки формы действительно происходит до события нажатия кнопки.Чтобы попробовать, отправьте свое предупреждение на событие отправки формы и посмотрите, не остановит ли это отправку.

$('input').closest('form').submit(function() {
  alert('Hey');
});
1 голос
/ 20 апреля 2011

Firefox 4 теперь использует в диалоговых окнах страницы; это уменьшает раздражение модальных диалогов в предыдущих версиях. Я бы предположил, что это HTML / JavaScript, а не на основе графического интерфейса операционной системы Если вы не хотите отправлять форму; Вы можете подключиться к событию отправки формы и вернуть false. На самом деле, подключение к функции отправки формы может быть лучшим вариантом для вас. Надеюсь, это поможет!

1 голос
/ 20 апреля 2011

Я не проверял это, но думаю, что это может сработать.

$('input').unbind('click').click(function{
    alert('Hey.');
    __doPostBack();
});
0 голосов
/ 20 апреля 2011

Блоки предупреждений теперь tab-modal в FF, что означает, что они блокируют доступ (и блокируют выполнение) только на текущей странице, а не во всем браузере. Очевидно, это не останавливает загрузку другой страницы.

Даже если это серьезное изменение в поведении, оно, возможно, имеет смысл.

В зависимости от вашего контекста, вы можете использовать onbeforeunload событие , чтобы показать сообщение пользователю. Однако в этом диалоговом окне всегда будет кнопка «ОК» и «Отмена».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...