Javascript Как вызвать функцию, когда мы выбираем "Оставаться на странице" в Chrome

Пожалуйста, проверьте мой код в браузере Chrome, если вы нажмете обновление, вам будет предложено 2 варианта.

  • Оставьте эту страницу и
  • Оставайтесь на этой странице

Когда я нажимаю 2. Оставайтесь на этой странице, она должна активировать мою пользовательскую функцию displayMsg()

Может ли кто-нибудь предоставить мне решение?

<script type="text/javascript">
function displayMsg() {
    alert('my text..');
}
</script>
<script type="text/javascript">
window.onbeforeunload = function(evt) {
  var message = 'Please Stay on this page and we will show you a secret text.';
  if (typeof evt == 'undefined') {
      evt = window.event;
  }       
  if (evt) {
      evt.returnValue = message;
      return message;
  }
  trace(evt);
} 
</script>

Ответ 1

используйте таймер для прослушивания переменной изменения:

var vals=0;
function displayMsg() {
    alert('my text..');
}
window.onbeforeunload = function evens(evt) {
var message = 'Please Stay on this page and we will show you a secret text.';
  if (typeof evt == 'undefined') {
      evt = window.event;
  }       
    timedCount();
    vals++;
  if (evt) {
      evt.returnValue = message ;
      return message ;
  }
  trace(evt);
} 

function timedCount()
{
t=setTimeout("timedCount()",100);
if(vals>0)
{
    displayMsg();
    clearTimeout(t);
}
}

Ответ 2

Вы можете использовать комбинацию событий onbeforeunload и onunload, устанавливая таймер в первом и очищая его в последнем:

var showMsgTimer;

window.onbeforeunload = function(evt) {
    var message = 'Please Stay on this page and we will show you a secret text.';
    showMsgTimer = window.setTimeout(showMessage, 500);

    evt = evt || window.evt;
    evt.returnValue = message;

    return message;
}

window.onunload = function () {
    clearTimeout(showMsgTimer);
}

function showMessage() {
    alert("You've been trolled!");
}

Это работает, потому что событие onunload никогда не срабатывает, когда пользователь предпочитает оставаться на странице.

Ответ 3

Пожалуйста, используйте эти строки кода, он работает правильно.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
    </script>
    <script type="text/javascript">
    $(function(){
    $(window).bind('beforeunload', function(){
      return 'Your Data will be lost :(';
     });
    });
    </script>