Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只有一个浏览器选项卡播放警报声音_Javascript_Php_Jquery_Mysql - Fatal编程技术网

Javascript 只有一个浏览器选项卡播放警报声音

Javascript 只有一个浏览器选项卡播放警报声音,javascript,php,jquery,mysql,Javascript,Php,Jquery,Mysql,我试图让浏览器在其他客人访问同一页面时发出警报。为此,每5秒钟运行一次sql查询(由jquery/javascript的setTimeout()控制),选择登录时间在过去5秒钟内的访问者,并在收到返回的内容时播放警报和显示通知。工作代码如下,仅供参考: select * from visitors where NOW() - landing_time < 5" 从访客中选择*,此时()-着陆时间

我试图让浏览器在其他客人访问同一页面时发出警报。为此,每5秒钟运行一次sql查询(由jquery/javascript的setTimeout()控制),选择登录时间在过去5秒钟内的访问者,并在收到返回的内容时播放警报和显示通知。工作代码如下,仅供参考:

select * from visitors where NOW() - landing_time < 5"
从访客中选择*,此时()-着陆时间<5“

问题是,这个脚本在我打开的每个选项卡中运行,因此如果我打开了两个选项卡,我会听到两个警报。有什么解决方法可以让我只听到一次声音?通知文本显示在两个选项卡中是可以的,因为它是不相关的,但是有两个警报声音会产生误导,就像两个用户刚刚登陆一样。丁丁也很烦人!

是吗足够好,只为活动选项卡发出警报声音?我认为这会更容易。在客户端实现这一点,特别是如果您希望获得良好的浏览器支持,则可能会带来无法解决的竞争条件。为了以保证可靠的方式实现这一点,您需要确认是否已向服务器端的特定客户端发送了特定通知。这有许多问题-例如,您将在服务器上存储可能不想保留的数据,实际上,您将使用数据库来确保这些操作是原子的,这是一个糟糕的设计:-(@Brad-很好;我忘了提到如果所有选项卡都处于非活动状态,我也需要警报,因为用户想知道有人在上。我想这样做是第二个最好的解决方案。在服务器上将其设置为原子操作,并设置“消息已发送”标记某个地方,这样无论有多少客户机/选项卡在您的服务器上运行,只有一个响应会收到“youhavemail”通知。