如何关闭浏览器窗口中的数据库更新?

时间:2020-06-19 08:53:55

标签: javascript jquery laravel-7

我正在尝试向用户流式传输一些视频,我希望使他们能够在离开网站并再次进入时恢复观看视频。 据我所知,将视频时间存储在浏览器的本地存储中,并在它们回来时检索它是最好的方法,但是在这种情况下,当用户从其他PC或浏览器登录时,视频观看时间将重置。 由于现在在某些浏览器中禁用了同步Ajax,因此我也无法在关闭浏览器的数据库中保存监视的时间(使用onunloadbeforeunload事件)。

我尝试过的另一种方法是,节省用户单击暂停按钮的时间,如下所示:

var video1 = document.getElementById('video1');

function videoPausePlayHandler(e) {
    if (e.type == 'pause') {
        //saving the watched time in databse using Ajax
    }
}
video1.addEventListener('pause', videoPausePlayHandler, false);

但是,当用户关闭浏览器窗口或其他任何东西而不是单击暂停按钮时,它将再次失效。

还有其他方法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用浏览器的onunload事件并发送一个Navigator.sendBeacon以将时间戳异步发送到服务器,而不会阻止用户关闭浏览器窗口。 sendBeacon Documentation。浏览器的覆盖范围看起来不错。只是旧版IE根本不支持它。