JQuery Отключить все перенаправления (ссылки, сообщения в форме, изменения окна и т.д.)
Можно ли использовать javascript для отключения любого кода, который отвлечет браузер от текущей страницы?
Я пробовал следующий код, но он не работал:
$(window).unload(function(e){
event.stopPropagation();
event.preventDefault();
return false;
});
Я предполагаю, что этот код не работает, потому что к моменту выгрузки() он слишком поздно.
Любые другие идеи?
Возможные реализации:
1. отключить любой код, который перенаправляет
2. привязать ко всем элементам, которые могут это сделать (ссылки, формы, что еще мне не хватает?)
Ответы
Ответ 1
Вы можете вывести сообщение в браузере, в котором спрашивают пользователя, хотят ли они покинуть страницу. Это работает на каждом событии, которое заставляет браузер покидать текущую страницу (даже представить формы и закрыть браузер).
Страница тестирования: http://dl.dropbox.com/u/3937673/test.html
JavaScript:
window.onbeforeunload = function(e){
var e = e || window.event;
// For IE and Firefox (prior to 4)
if (e){
e.returnValue = 'Do you want to leave this page?';
}
// For Safari and Chrome
return "Do you want to leave this page?";
};
Или с помощью jQuery:
$(window).bind('beforeunload', function(){
return "Do you want to leave this page?";
});
Ответ 2
Просто привяжите его ко всем элементам, которые могут его запустить,
var stopLeaving = function(e){
return confirm('Are you sure you want to leave this page?');
};
$('form').submit(stopLeaving);
$('a').click(stopLeaving);
Ответ 3
это должно быть:
$(window).unload(function(e){
e.stopPropagation();
e.preventDefault();
return false;
});
но это не сработает.
цитата из api.jquery.com:
После выполнения этого кода предупреждение будет отображаться всякий раз, когда браузер покидает текущую страницу. Невозможно отменить событие разгрузки с помощью .preventDefault(). Это событие доступно, так что скрипты могут выполнять очистку, когда пользователь покидает страницу.
http://api.jquery.com/unload/
так что самое лучшее, что вы можете сделать, это прогнать пользователя, если он действительно хочет покинуть страницу.