javascript:在所有选项卡中运行一次代码

标签 javascript html node.js websocket local-storage

每次页面收到​​ websocket 事件时,都会播放通知声音。问题是,如果用户打开了其中 10 个选项卡,则所有 10 个选项卡都会播放声音。

那么有没有办法在所有选项卡中仅运行此代码一次,而不修改服务器端代码?

socket.on('notification', function(){
  playSound(); // this will run on every tab, which is annoying
});

最佳答案

我花了相当多的时间开发一个处理这个问题的库,它非常小,你可以像这样锁定:

//locked "critical section" code - runs only once
TabUtils.CallOnce("lockname", function () {
    alert("I run only once in multiple tabs");
});

https://github.com/jitbit/TabUtils

关于javascript:在所有选项卡中运行一次代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44740924/

相关文章:

javascript - 让多个实例只显示被点击的实例

javascript - 可以在鼠标左键单击时触发 context.js 上下文菜单

javascript - 在内联 HTML 中使用包含单引号的字符串作为 Javascript 参数

javascript - forEach 循环有序

node.js - Lambda 代码适用于 node v8.10 但不适用于 nodejs v10.x

mysql - Sequelize N :M ParentModel. setChilds(ChildArray) 不是函数(魔术方法?)

javascript - 尝试将背景图像添加到 D3 圈子

javascript - 动画移动一个 td 到另一个 td

javascript - 根据一些参数遍历 HTML 表格

css - 如何设置父div高度自适应内层div高度?