Javascript 检测是否<;音频>`pause`由用户交互或缓冲区运行不足引发的事件?
通过或播放实时音频流(如网络广播)时,暂停事件可以(至少)通过三种方式触发:Javascript 检测是否<;音频>`pause`由用户交互或缓冲区运行不足引发的事件?,javascript,audio,html5-audio,mediaelement,mediasession,Javascript,Audio,Html5 Audio,Mediaelement,Mediasession,通过或播放实时音频流(如网络广播)时,暂停事件可以(至少)通过三种方式触发: 用户单击暂停按钮(使用 Android:浏览器的通知抽屉(至少是Chrome、Opera、Firefox) 桌面:控件,但未初始化,没有显式的setActionHandler(现在可能隐藏在标志后面) 由各种网络状况引起的缓冲区不足 是否可以区分1/2和3? 理想情况下,会有一个类似的事件属性,我缺少它 我试过猜测,尤其是看和,但这两个都是非常不确定的,尤其是在浏览器中(例如,拥有未来数据的解释/语义vs拥有足够的
setActionHandler
(现在可能隐藏在标志后面)- 理想情况下,会有一个类似的事件属性,我缺少它
- 我试过猜测,尤其是看和,但这两个都是非常不确定的,尤其是在浏览器中(例如,
vs拥有未来数据的解释/语义
)拥有足够的数据
- 我一直避免制造“衰退状态机”,处理其他事件。缓冲区运行不足之前通常会出现
事件,有时之后会出现stalled
事件。跨浏览器实现似乎非常复杂,误报的危险性非常高end
const video=document.getElementById('mwe_player_0');
video.onwaiting=function(){console.log('onwaiting');};
如果您想在用户暂停音频时启动一个事件,则此代码段将完成此任务。我没有在通知抽屉中的mobile上测试它,但我认为它可以工作
const video = document.querySelector('video');
video.addEventListener('pause', (event) => {
console.log('The Boolean paused property is now true. Either the ' +
'pause() method was called or the autoplay attribute was toggled.');
});
:音频元素事件
:暂停事件
我还找到了一个有用的答案,回答了你想做什么(至少从我的理解来看),以及为什么这是一种糟糕的技术
3Events:stalled/waiting检查事件资源谢谢,但我还是要设置一些标志,比如
was\u waiting
,然后说明暂停
可能是一个网络事件(需要经过多少时间才能结束?)。如果不够清楚:我必须处理暂停
,找不到替代方案。我在类似的结束
事件的狭义用例中取得了一些成功:对于预期将播放的直播流(再次,一个标志),在结束之前的暂停
事件变得毫无意义-我可以推断,任何其他暂停
都必须是用户交互…直到出现新的控制方案;)…tl;dr:我已经看过这个和其他事件,充其量只是令人沮丧的隐式猜测。为什么你必须处理pause
事件,而它不会在缺少数据时触发?pause
事件确实发生在有限的资源中,它们只对实时流有意义。对不起,请打开。这只会侦听事件,但不会识别其来源。另外,我也没有尝试做任何经典意义上的UA/移动嗅探。