当用户关闭浏览器时,我想在窗口关闭之前运行一些代码,因为如果没有,则会导致其他用户出现问题。我正在处理的部分应用程序有一个随机视频聊天。房间由用户创建,当他们等待某人加入时,他们关闭浏览器选项卡/窗口,然后房间没有正确关闭,仍然可供其他用户加入。关闭窗口中的灰烬事件关闭
我见过很多使用beforeunload的例子,但他们只是不适合Ember工作。也许我错过了一个更加粗犷的做事方式,或者我需要依靠心跳方法?
我一直在试图做的是使用窗口beforeunload事件,但我一直没有任何运气。如果有更好的方法去解决我的上述问题,我全都是耳朵!
现在我在setupController方法结合,如:
$(window).bind('beforeunload', function() {
console.log('ending chat');
this.endChat();
});
我也试过在路由这段代码,也许在视图中(在过去的一个月试了很多东西,我不记得一切)。
UPDATE:代码更新
这里是setupController参照控制器对象,而不是窗口。
setupController: function(controller, hash){
$(window).on('beforeunload',() => {
controller.hasStarted ? controller.endChat() : controller.send('leaveChat');
});
$(window).on('click',() => {
controller.hasStarted ? controller.endChat() : controller.send('leaveChat');
console.log('you just clicked');
});
}
的窗口中点击事件触发完美,但什么也没有发生在beforeunload事件 - 窗口刚刚关闭正常兵不血刃任何操作/方法。
它很接近!是的,事件在控制器上。我已经改变了它,但无法对beforeunload事件进行任何操作。我向窗口点击事件添加了另一个事件,以验证所有内容都正确连接,并且工作正常。但仍然没有任何关于beforeunload – awwester
刚更新的问题与新的代码。谢谢! – awwester