Могу ли я открыть диалоговое окно подтверждения, когда пользователь закрывает окно в Safari / Chrome? - PullRequest
5 голосов
/ 29 апреля 2009

В IE и FF я могу прикрепить обработчик события к onBeforeUnload, и, передав строку в свойство события, пользователь увидит диалоговое окно с вопросом, хочет ли он продолжить «выгрузку» (либо закрытие окно или навигация прочь).

Safari и Chrome не поддерживают onBeforeUnload, а onUnload, похоже, слишком поздно. Есть ли способ воспроизвести те же функции в Safari / Chrome?

ПРИМЕЧАНИЕ. Я не пытаюсь держать пользователя в заложниках. Я знаю, что это нытье и не круто. Фактически, мой сайт делает все возможное, чтобы позволить пользователю свободно перемещаться и иметь все на своем месте, когда он вернется. Однако я размещаю другие сайты внутри IFrames, и иногда они решают избавиться от меня и захватить браузер, чего я и стараюсь избегать.

Спасибо!

Ответы [ 4 ]

7 голосов
/ 30 апреля 2009

Это прекрасно работает для меня как в Chrome, так и в Safari:

<html><body><p>Test</p>
<script>window.onbeforeunload = function() { return "Sure?"; }</script>
</body></html>

Когда я пытаюсь закрыть окно, я получаю приглашение.

2 голосов
/ 09 декабря 2010

Я проверил это в Chrome, и, кажется, работает нормально, используя это:

<body onunload="alert('x');" onbeforeunload="test1();">
2 голосов
/ 30 апреля 2009

Сам StackOverflow использует onbeforeunload, и он отлично работает в Safari:

function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}
1 голос
/ 18 октября 2011

Этот вопрос более подробно описан в другом более новом вопросе StackOverFlow: Настройка onbeforeunload для элемента body в Chrome и IE с помощью jQuery

...