我有这个流程设置,询问用户是否希望离开聊天室。如果是,则处理卸载并在房间中写入用户离开聊天室并将聊天室占用减少1的消息。
那部分工作正常......
但是,如果用户选择留下(并点击弹出窗口上的'那么它会保留在页面上就可以了。但是下次用户决定离开时,前导码不会被执行第二次,他在页面上没有收到任何问题。
那么如果它们停留在页面上以便再次执行,我如何重置beforeunload?
这是我的代码:
/* ask them the question about leaving */
$(window).one("beforeunload", function () {
return 'Do you want to leave the chat room?';
});
/* they chose to leave */
$(window).one("unload", function () {
/* post left room text msg */
/* adjust room count */
});
答案 0 :(得分:1)
您正在使用.one
附加事件处理程序 - 这意味着它们只会根据您的描述执行一次。请尝试将其更改为.on
,如下所示:
//Ask them the question about leaving
$(window).on('beforeunload', function () {
return 'Do you want to leave the chat room?';
});
//They chose to leave
$(window).on('unload', function () {
/* post left room text msg */
/* adjust room count */
});