我目前无法停止通过 ajax 调用在服务网页上播放音频
Posted
技术标签:
【中文标题】我目前无法停止通过 ajax 调用在服务网页上播放音频【英文标题】:I cant stop currently playing audio on served webpages via ajax calls 【发布时间】:2019-02-13 17:05:50 【问题描述】:我设计了一个 pub quiz 页面,它可以按照我的意愿运行。对于音频回合,我想播放所有玩家都能听到的声音。这样可行。但是当我点击停止时,它会在我的浏览器实例中停止,而不是在播放器页面中。
我正在使用 php 从测验母版页面生成的 txt 文件。使用 ajax 每秒读取这些文件,并在播放器页面上更改输出时更改输出。我所有的代码都可以工作,甚至可以触发新的声音事件。但是一旦在播放器浏览器中播放音频事件,我就无法阻止它。 我的 php 正在创建文本文件 - 单击停止时的空白条目。当我更改文本文件时,会播放一个新的音频剪辑。 我尝试添加 aud.stop();在通话开始时,但它会阻止任何音频播放。
<script>
function updateq()
$.ajax(url: '<?php echo $baseurl."curquestion.txt"; ?>', ifModified: true, success: function(result, status)
if (status === 'success') $('#cq').html(result);
);
$.ajax(url: '<?php echo $baseurl."playaudio.txt"; ?>', ifModified: true, success: function(result, status)
if (status === 'success') var aud = new Audio(result); aud.play();
);
setTimeout('updateq()',1000);
;
</script>
<script type="text/javascript">
$(document).ready(
function()
updateq();
);
</script>
当我的 playaudio.txt 从有效的 mp3 文件名更改为“”时,我希望音频会停止。但是一旦在播放器网络浏览器中触发,一旦播放了音频文件,它就会一直播放到完成或页面刷新。加载网页时音频事件似乎重叠。
【问题讨论】:
【参考方案1】:我认为问题在于范围。播放音频的 var 在加载下一个时不存在,因此您无法停止它。不妨试试这样的。
<script>
var lastAud = null;
function updateq()
$.ajax(url: '<?php echo $baseurl."curquestion.txt"; ?>', ifModified: true, success: function(result, status)
if (status === 'success') $('#cq').html(result);
);
$.ajax(url: '<?php echo $baseurl."playaudio.txt"; ?>', ifModified: true, success: function(result, status)
if (status === 'success')
if(lastAud && lastAud.src != result)
location.reload();
aud = new Audio(result);
aud.play();
lastAud = aud;
);
setTimeout('updateq()',1000);
;
</script>
<script type="text/javascript">
$(document).ready(
function()
updateq();
);
</script>
【讨论】:
一个小的屠宰工作,我得到了我的解决方案 - 将变量传回是关键。而不是 aud.stop(); - 这没有用,我做了一个 location.reload();你给了我找到这个解决方案的灵感!!谢谢先生。 没问题,很高兴我能帮上忙!我批准了您建议的修改,祝您编码愉快!以上是关于我目前无法停止通过 ajax 调用在服务网页上播放音频的主要内容,如果未能解决你的问题,请参考以下文章