是否有任何机制可以让我在浏览器级别处理这些值?我的意思是:
我可以在浏览器的ANY选项卡中访问值的sessionStorage(类似于服务器端会话)
在会话结束时将被删除的localStorage(关闭浏览器时,而不是选项卡时)
例如,视频在播放器的一个选项卡中开始。某些标志存储在这种存储中。当用户使用相同的网址打开另一个标签时,应用应读取该标志并拒绝播放视频。当然,应在退出时将其删除,否则标志将拒绝该浏览器中所有以后的请求。有什么建议?
最后,我放弃了服务器端会话,因为它提出了其他问题,并通过以下工作流程解决了该问题:
页面加载后,将设置localStorage值(如果以前从未设置过),并在此选项卡中标记播放器已打开。如果已经设置了localStorage,则将标志设置为false。
如果设置了标志,则播放视频,否则禁止播放。
在页面卸载时,仅当设置了标志(即,如果用户在此选项卡中打开了视频)时,才删除localStorage值。
$(function () {
if (localStorage.playerTabOpened) {
var dateNow = Date.now();
var diffSinceLastTabOpened = (dateNow - localStorage.playerTabOpened) / 1000;
// if playerTabOpened value was stored more than 1 day ago, delete it anyway because it could be left by chance
if (diffSinceLastTabOpened > 86400) {
localStorage.removeItem("playerTabOpened");
};
}
if (!localStorage.playerTabOpened) {
shared.playerTabOpenedHere = true;
localStorage.setItem("playerTabOpened", Date.now());
} else {
shared.playerTabOpenedHere = false;
}
});
$(window).on("beforeunload", function () {
if (shared.playerTabOpenedHere) {
localStorage.removeItem("playerTabOpened");
}
});
if (shared.playerTabOpenedHere) {
// play
} else {
// throw error
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句