2012-04-25 3 views
1

Я использую следующие js, чтобы показать всплывающее окно перед закрытием браузера/окна. Но, похоже, это не работает.Показывать всплывающее окно jQuery перед окном браузера

$(window).bind('beforeunload', function(e) { 
    $('#beforeclose').click(); 
}); 

Всплывающее окно, которое я пытаюсь показать, это prettyPopin. И #beforeclose является идентификатором якоря, с которым я пытаюсь связать событие click перед выгрузкой окна. Я заметил, что встроенные всплывающие окна js работают, но всплывающее окно jQuery не работает.

Есть ли способ достичь того, что я хочу? Пожалуйста, объясните мне или отсылайте меня к соответствующей ссылке, потому что я не эксперт в js.

Заранее спасибо.

ответ

3

Вы не можете безопасно это сделать.

onbeforeunload разработан таким образом, чтобы избежать полного отказа пользователя покидать страницу. Единственное, что вам нужно сделать, это вернуть строку с сообщением, почему пользователь может не захотеть покинуть страницу. Это сообщение отображается пользователю unless he's using firefox.

+0

Можем ли мы сделать это любым другим путь? Пожалуйста, предложите. – xmaestro

+0

Нет. Если бы вы могли победить цель этих ограничений, не так ли? – ThiefMaster

+0

Так ли я прав, чтобы понять, что только встроенные предупреждения js могут остановить выполнение четного потока? И не может ли это сделать пользовательское всплывающее окно? Просто сделаю все для себя;) – xmaestro

0

Попробуйте изменить его

$(window).bind('beforeunload', function(e) { 
    $('#beforeclose').click(); 
    e.preventDefault(); 
    return false; // just in case.. 
}); 

из jQuery documentation:

event.preventDefault()

Описание: Если этот метод вызывается, действие по умолчанию события не будет срабатывать.

В принципе, вы зывать функцию, которая показывает всплывающее окно на beforeunload событии, но не блокирует браузер, как в окно предупреждения или что-то в этом роде. Используя event.preventDefault(), вы прекратите выполнение потока событий.

+0

'beforeunload' не работает, как это. Вы можете вернуть строку, которая может (а не firefox) или не указана (firefox) пользователю в приглашении, если он хочет покинуть страницу или нет. – ThiefMaster

+0

Thanx человек, возвращающий что-то, останавливает окно от закрытия. но с сообщением, сообщающим мне, хочу ли я оставить страницу или нет ... Я не хочу этого сообщения. Мне просто нужно всплывающее окно jquery. Пожалуйста, скажите мне, есть ли способ. – xmaestro

+0

См. Мой ответ. Вы не можете сделать это. – ThiefMaster

1

Попробуйте это:

<script type="text/javascript"> 
     $(function() { 
     function confirmmsg() { 
      return "Mail Not sent"; 
     } 
     window.onbeforeunload = confirmmsg; 

     }); 
</script> 
+0

Почему именно вы завершаете этот код в событии, посвященном dom? – ThiefMaster

Смежные вопросы