Ответ 1
window.onbeforeunload = function() {
return 'You have unsaved changes!';
}
См. статью MSDN в onbeforeunload
Также существует аналогичный вопрос в SO
У меня есть запрос относительно моего приложения. Когда пользователь закрывает окно браузера случайно, я бы хотел сделать некоторые операции очистки до этого. Я использовал событие onunload, но проблема в том, что это событие иногда срабатывает, а иногда нет. Что мне делать, есть ли лучший способ справиться с такой проблемой.
window.onbeforeunload = function() {
return 'You have unsaved changes!';
}
См. статью MSDN в onbeforeunload
Также существует аналогичный вопрос в SO
Try:
window.onbeforeunload = function() { ...your code... }
Из моего опыта onunload работает по-разному в разных браузерах. Почему бы вам не использовать другой обработчик событий, называемый onbeforeunload. Он должен работать. Onbeforeunload будет выполняться сначала до закрытия окна, так что это должно решить вашу проблему.
Это работает:
window.onbeforeunload = function(){
console.log('closing shared worker port...');
return 'Take care now, bye-bye then.';
};
Это удобно, если вы, например, работаете с SharedWorkers, и вам нужно сообщить работнику, что есть один порт для управления, иначе вы могли бы обновить одну вкладку браузера и получить что-то вроде "Успешно связанный с: 10 другими вкладками", потому что одна вкладка сохраняет работоспособность, пока другая вкладка обновляется, продолжая нажимать на вас новые портовые соединения.
Надеюсь, что это поможет.
это один из моих ответов, который дает u onbeforeunload только в том случае, если пользователь хочет закрыть окно, а также удержать сообщение браузера в некоторой степени.....
<html>
<head>
<script src='http://code.jquery.com/jquery-1.6.2.min.js'></script> <!--this is get jquery header file its not required but i have used jquery for minor correction-->
<script type="text/javascript" src="http://fbug.googlecode.com/svn/lite/branches/firebug1.4/content/firebug-lite-dev.js"></script><!--this will give a firebug to check the console in IE-->
<script language='javascript'>
window.onbeforeunload = function(evt){
var message = "";
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; //validating the browser where its chrome or not
if(is_chrome){
message = "Do you want to close the browser or not?";
}
if(this.flag == 1 || $('#help').css('background-color') == 'red'){
console.log("red");
return message;
} else { console.log("blue"); return NULL;}
}
function change(){
$('#help').css('background-color','red');
this.flag = 1;
}
</script>
</head>
<body>
<a id='help' onclick=change() title="please click on Links">Links</a>
</body>
</html>
Я думаю, что это может быть полезно для любого органа, спасибо.....
Это запрещено по соображениям безопасности. onbeforeunload - это браузер API, который имеет разные типы поведения в разных браузерах.