jQuery Отключить все перенаправления (ссылки, отправка формы, изменения окна и др.) - PullRequest
10 голосов
/ 08 марта 2011

Можно ли использовать javascript для отключения любого кода , который убрал бы браузер с текущей страницы?

Я пробовал следующий код, но он не работал:

$(window).unload(function(e){
    event.stopPropagation();
    event.preventDefault();
    return false;
});

Я предполагаю, что этот код не работает, потому что ко времени unload () уже слишком поздно.

Есть другие идеи?

Возможные реализации:1. отключить любой код, который перенаправляет 2. привязать ко всем элементам, которые могут это сделать (ссылки, формы, что еще мне не хватает?)

Ответы [ 3 ]

5 голосов
/ 08 марта 2011

Вы можете открыть сообщение в браузере, спрашивая пользователя, хотят ли они покинуть страницу. Это работает для каждого события, которое вынуждает браузер покинуть текущую страницу (даже для отправки формы и закрытия браузера).

Тестовая страница: 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?";
});
0 голосов
/ 08 марта 2011

должно быть:

$(window).unload(function(e){
e.stopPropagation();
e.preventDefault();
return false;
});

, но оно не будет работать.

цитата из api.jquery.com:

После выполнения этого кода, предупреждение будет отображаться всякий раз, когда браузер покидает текущую страницу.Невозможно отменить событие выгрузки с помощью .preventDefault ().Это событие доступно для того, чтобы сценарии могли выполнять очистку, когда пользователь покидает страницу.

http://api.jquery.com/unload/

поэтому лучшее, что вы можете сделать, - это запросить пользователя, если он действительнохочет покинуть страницу.

0 голосов
/ 08 марта 2011

Просто свяжите его со всеми элементами, которые могут его запустить,

var stopLeaving = function(e){
    return confirm('Are you sure you want to leave this page?');
};

$('form').submit(stopLeaving);
$('a').click(stopLeaving);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...