javascript - 如何在浏览器窗口关闭时更新数据库?

标签 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);


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

有没有其他方法可以做到这一点?

最佳答案

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

关于javascript - 如何在浏览器窗口关闭时更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62466692/

相关文章:

laravel - FFMpeg 返回错误 : Unrecognized option 'master_pl_name'

laravel - 如何滚动到 livewire laravel 中的第一个验证错误消息

javascript - MongoDB引用错误: Schema is not defined

javascript - 如何在页面加载时运行 jquery 函数?

javascript - 这如何成为递归结构?

javascript - 更改图像中的圆点

javascript - jquery/jscript 未加载

php - Laravel 路由列表 (php artisan route :list) Displaying Middleware on New Lines

javascript - Bing map - Javascript 与 Silverlight

javascript - 使用 Promise.all() Javascript 解析多个 JSON