javascript - 在 AJAX 返回的元素仍然可见时暂停 HTML5 音频
问题描述
我有一个 HTML 页面,它轮询连接到数据库的 PHP 脚本以查看是否收到任何新项目(新项目标记为NEW),如果有,则将一个元素#audio
发送到浏览器,以便播放声音:
$(document).ajaxComplete(function() {
if ($('#audio').length) {
$('#sound').get(0).play();
}
});
它#sound
位于页面的 HTML 中,因此如果返回 #audio 并带有标记为 NEW 的项目,则播放声音。
轮询会在特定时间范围内返回所有项目,因此可以返回旧项目和新#audio
项目,这就是为什么如果有一个标记为 NEW 我附上一个来发出声音。
播放声音后,用户按下按钮以使用 update.php 将数据库中的 NEW 状态更新为 OLD,同时暂停声音。
$('body').on('click','.acc',function() {
$('#sound').get(0).pause();
var itemID = $(this).data("id");
{
$.post("update.php",
{
id: itemID
},);
}
});
现在我遇到的问题是,虽然这有效,但有时服务器更新的延迟(从新到旧)会导致声音播放,因为它#audio
仍然存在。
我也尝试在单击时隐藏元素,但仍然具有相同的效果,即#audio
在更新过程中仍会返回。
我需要做什么,我可以在服务器仍在处理时使用不同的技术来停止声音吗?
如果不让我知道,希望这是有道理的,我会进一步解释并提前致谢。
解决方案
推荐阅读
- javascript - 如何在时间> = 12时以不同方式设置颜色,全日历
- react-native - TypeError: (0, _reactNavigationDrawer.createAppContainer) 不是函数:React Native 错误
- android - Android Camera2 管道:如何使用来自输入 Surface 的 MediaCodec 对 h.264 单位进行编码?
- sql - 根据记录与另一列关联的次数进行计数
- python - 有效地重新排列 NumPy 数组
- c++ - 如何声明具有在声明下方定义的类型的参数的函数?
- javascript - 如何解释和解决这个 webpack “ReferenceError: document is not defined” 编译错误?
- java - 当代理不可用时,如何忽略 Log4j2 Kafka appender 警告消息?
- c# - 如何将 Asp.NET 按钮与代码隐藏链接?
- algorithm - 通过对 A 和 B(含)之间的一个或多个整数进行按位或运算可以生成多少个不同的数字