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

StackOverflow https://stackoverflow.com/questions/803887

Вопрос

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

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

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

Спасибо!

Это было полезно?

Решение

У меня это отлично работает как в Chrome, так и в Safari:

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

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

Другие советы

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

function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}

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

<body onunload="alert('x');" onbeforeunload="test1();">

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top