在用户离开或关闭页面之前保存HTML5视频currentTime

时间:2012-07-26 11:06:31

标签: javascript ajax html5 javascript-events html5-video

我想在用户离开网页时将HTML5视频currentTime的位置保存到数据库中。似乎window.onbeforeunload不是一种可行的方法(更不用说它会给出一个不受欢迎的弹出窗口!)。有更好的方法吗?

除了定期将位置保存到服务器之外,我无法想到任何其他事情。但这似乎是浪费资源/带宽的明智之举。 Netflix似乎在记住你上次观看的位置方面做得很好。他们如何能够可靠地实现这一目标?可能是低级服务器端C / C ++代码吗?

1 个答案:

答案 0 :(得分:4)

有多种方法可以保存这些东西:

本地(针对同一域名)

beforeunload

如果您愿意,可以取消卸载事件。但是,弹出窗口是可选的。

卸载

此事件无法取消,但您仍可以完全访问所有节点和JavaScript变量。因此,如果不需要取消,您可以进行最终清理/保存。您可以使用您喜欢的任何保存方法,例如document.cookiewindow.localStorage

window.onunload = function () {
    window.localstorage[myVideo.currentTime] = document.getElementById("myVid").currentTime;
}

如果您可以处理以下事实:当用户返回您的站点时,您只能处理cookie和localStorage。我认为这种方法是完美的。您只需保存当前时间,下次访问的用户就可以获得更新的信息。

在后端

如果你真的需要将这些信息保存到你的后端,你可以尝试其他一些事情。

数据库轮询

根据您的准确度需求,您可以每10到20秒发送一次ajax请求以更新播放时间。如果您只包含视频ID和当前时间,则请求非常小,不应对性能产生影响。但是请记住,如果你有很多域cookie,它可能会极大地增加请求的大小,而你的500字节有效载荷可能带有5kB的头。