正在尝试处理卸载事件



当我关闭浏览器或转到其他页面时,我试图执行一些操作,但没有执行任何操作这是底部的脚本,下面是我尝试过的rwho方法。我试着使用jquery,但我意识到unload函数已弃用

if(game_id){
get_players();
get_users();
}
function get_players(){
socket.emit('on_lobby', {
game_id:game_id,
});
socket.on('lobby_connected',function(){
$.ajax({
url:'/getPlayers',
method:'GET',
data:{
game_id: game_id
}
}).done(function(response){
if(response.status === 'ok'){
$('#connected_players').empty();
$('#connected_players').append(response.html);

}else{
Swal.fire({
icon: 'error',
text: response.message,
})
}
});
});
}
function get_users(searched){
$.ajax({
url:'/getConnectedUsers',
method:'GET',
data:{
searched:searched
}
}).done(function(response){
if(response.status === 'ok'){
$('#connected_users').empty();
$('#connected_users').append(response.html);

}else{
Swal.fire({
icon: 'error',
text: response.message,
})
}
});
}
function search_users(){
var searched = $('#search-user-input').val();
get_users(searched);
}
function send_invitation(receiver){
socket.emit('private',{
type:'invitation',
receiver: receiver,
sender: username,
text:'/game/' + game_id
});
}
socket.on('user_loged', function(){
get_users();
})
socket.on('user_loged_out', function(msg){
if($('#player-item-'+ msg.username ) !== undefined){
$('#player-item-'+ msg.username).remove();
}
get_users();
})
//not work
window.onunload = unloadPage;
function unloadPage()
{
alert("unload event detected!");
}
//doesn't works too
window.addEventListener('unload', function(event) {
alert('I am the 3rd one.');
});

使用beforeunload事件处理程序。要引用MDN Web文档。。。

当窗口、文档及其资源即将卸载时,将触发beforeunload事件。文档仍然可见,此时事件仍然可以取消。

你是对的,jQuery中的unload()已被弃用!他们没有完全说明,但他们确实在unload()文档页面上列出了beforeunload作为可能的替代方案。。。

在实际使用中,[unload((]行为应该在所有支持的浏览器上进行测试,并与类似的beforeunload事件进行对比。

在下面的一个简单示例中,处理程序检查用户是否可以重定向或刷新,如果可以,则允许事件正常处理(关闭窗口(,否则,我们将取消事件(返回false或取消默认值就足够了,但我喜欢两者都做(。

在纯JavaScript中。。。

window.onbeforeunload = function (e) {
if(confirm()) {
return true;
}
e.preventDefault();
return false;
};

最新更新