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>