У меня есть запрос относительно моего приложения. Когда пользователь закрывает окно браузера случайно, я бы хотел сделать некоторые операции очистки до этого. Я использовал событие onunload, но проблема в том, что это событие иногда срабатывает, а иногда нет. Что мне делать, есть ли лучший способ справиться с такой проблемой.
JavaScript + onbeforeunload
Ответ 1
window.onbeforeunload = function() {
return 'You have unsaved changes!';
}
См. статью MSDN в onbeforeunload
Также существует аналогичный вопрос в SO
Ответ 2
Try:
window.onbeforeunload = function() { ...your code... }
Ответ 3
Из моего опыта onunload работает по-разному в разных браузерах. Почему бы вам не использовать другой обработчик событий, называемый onbeforeunload. Он должен работать. Onbeforeunload будет выполняться сначала до закрытия окна, так что это должно решить вашу проблему.
Ответ 4
Это работает:
window.onbeforeunload = function(){
console.log('closing shared worker port...');
return 'Take care now, bye-bye then.';
};
Это удобно, если вы, например, работаете с SharedWorkers, и вам нужно сообщить работнику, что есть один порт для управления, иначе вы могли бы обновить одну вкладку браузера и получить что-то вроде "Успешно связанный с: 10 другими вкладками", потому что одна вкладка сохраняет работоспособность, пока другая вкладка обновляется, продолжая нажимать на вас новые портовые соединения.
Надеюсь, что это поможет.
Ответ 5
это один из моих ответов, который дает 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>
Я думаю, что это может быть полезно для любого органа, спасибо.....
Ответ 6
Это запрещено по соображениям безопасности. onbeforeunload - это браузер API, который имеет разные типы поведения в разных браузерах.