Javascript:在多个标签中播放一次音频

咸罗卡

在我的应用程序中,我编写了程序,当用户收到通知时,系统播放音频以通知用户。

如果用户打开了许多浏览器选项卡,则此音频会播放很多次(一个用于选项卡)。

有什么办法可以使音频只播放一次

谢谢!

罗勒

您可以在中设置标记localStorage

//create random key variable
var randomKey = Math.random() * 10000;
//set key if it does not exist
if (localStorage.getItem("tabKey") === null) {
    localStorage.setItem("tabKey", randomKey);
}

这样,该项目tabKey将设置为randomKey第一个选项卡的。现在,当您播放音频时,您可以执行以下操作:

if (localStorage.getItem("tabKey") === randomKey) {
    playAudio();
}

这将仅在第一个选项卡中播放音频。

唯一的问题是,您必须对这种情况做出反应,即用户正在关闭第一个选项卡。您可以通过取消tabKey关闭标签页上项目并在其他标签页中捕获该事件来实现此目的storage

//when main tab closes, remove item from localStorage
window.addEventListener("unload", function () {
    if (localStorage.getItem("tabKey") === randomKey) {
        localStorage.removeItem("tabKey");
    }
});

//when non-main tabs receive the "close" event,
//the first one will set the `tabKey` to its `randomKey`
window.addEventListener("storage", function(evt) {
    if (evt.key === "tabKey" && evt.newValue === null) {
        if (localStorage.getItem("tabKey") === null) {
            localStorage.setItem("tabKey", randomKey);
        }
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我一次播放多个音频时遇到问题

使用Javascript / jQuery一次播放一个HTML音频文件

如何使用javascript随机播放音频标签中的多个音频文件?

如何一次打开多个标签[JavaScript]

一次在javafx中定义多个标签

第一次播放AVPlayer视频然后在AudioKit中录制音频时崩溃

在新电子邮件通知中只播放一次音频

如何使用 JQuery 只播放一次音频?

一次迭代多个标签的更改

在python中组合多个波形一次播放多个音符?

音频播放器-一次仅播放一首曲目,不起作用

除非手动触发一次,否则HTML5音频无法通过Javascript播放

设置间隔播放音频只循环音频一次?

使用JQuery自动播放音频并只播放一次

React 管理同一页面上的多个音频并使用基于函数的组件一次播放一个

Gstreamer一次不播放多个流

一次播放多个声音文件

在Android中一次播放多个URL

创建自定义音频播放器时如何第一次播放音频

Javascript循环播放多个音频

我们如何使用javascript单击一次下载多个文件(图像,音频,视频,txt)

在R中重新记录因子水平和标签(一次多个变量)

一次搜索Gmail线程中多个未读标签的脚本

javascript:我的声音只播放一次?

AVAudioPlayer第一次不能正确播放音频

如何在第一次点击时播放音频?

Safari 在使用 <amp-audio> 时只播放一次音频

在标记检测 A 帧和 Ar.js 上播放音频一次

Docker push:使用多个标签一次推送映像