javascript – IOS上的HTML5音频:currentTime如何小于初始值?

javascript – IOS上的HTML5音频:currentTime如何小于初始值?,第1张

概述我必须播放更大音频的短片段.我使用currentTime设置起始时间点,并使用timeupdate事件在需要时停止音频. 我注意到,在很少的早期更新事件中,有时currentTime小于初始值,尽管(显然)没有“倒带”动作. 这是代码示例: var start = 1;var end = 1.3;var audio = document.getElementById('audio');au 我必须播放更大音频的短片段.我使用currentTime设置起始时间点,并使用timeupdate事件在需要时停止音频.

我注意到,在很少的早期更新事件中,有时currentTime小于其初始值,尽管(显然)没有“倒带”动作.

这是代码示例:

var start = 1;var end = 1.3;var audio = document.getElementByID('audio');audio.addEventListener('timeupdate',function () {   console.log(audio.currentTime);   if (audio.currentTime < start || audio.currentTime > end) {      audio.pause();   }});audio.currentTime = start;audio.play();

例如,控制台日志的输出可以是:

10.850.8511.02...

这是an example.

使用iOS 11.4.1在iPad上测试.此问题仅在非常短的时间范围内出现~0.3秒.

解决方法 起初你有一个错误的问题,因为你希望你的脚本在iOS上运行.因此,你在标题中的问题是无关紧要的.我们在iOS上有很多错误,iOS开发人员不想纠正它们.这是一个错误.写信给iOS支持并询问“怎么可能?”.

第二,你的帖子中有两个问题,因为你的脚本不能像你想要的那样在iOS上运行.

我为你写了解决方案.在音频元素加载元数据(第一个错误)之前,请确保您没有尝试调用音频.然后你有第二个错误:而不是:

if(audio.currentTime < start || audio.currentTime > end) //your mistake

你必须写:

if(audio.currentTime >= end)

解决方案(也适用于iOS)

var start = 1,end = 1.3,audio = document.getElementByID('audio'),button = document.getElementByID('button'),log = document.getElementByID('log');audio.addEventListener('timeupdate',function(){   writeLog(audio.currentTime);   //your mistake: if(audio.currentTime < start || audio.currentTime > end)   if(audio.currentTime >= end)   {      audio.pause();   }});function writeLog(value){    var div = document.createElement('div');    div.INNERHTML = value;    log.insertBefore(div,log.firstChild);}audio.addEventListener('loadedMetadata',function(){    audio.pause();    button.removeAttribute('Disabled');});button.addEventListener('click',function(){    log.insertBefore(log.lastChild.cloneNode(!0),log.firstChild);    audio.currentTime = start;    audio.play();});
#log{    wIDth:100%;    height:18em;    overflow-y:auto;    Font:3em 'CourIEr New';    background:#069;    color:#7e0}#log div:last-child{display:none}
<!--For this link from your example (on Jsfiddle.net) is only a download is possible,but not using as source:        http://techslides.com/demos/samples/sample.m4a   --><audio ID="audio" preload="auto">    <source src="http://techslIDes.com/demos/samples/sample.mp3" type="audio/mpeg"/>    <source src="http://techslIDes.com/demos/samples/sample.ogg" type="audio/ogg"/>    <source src="http://techslIDes.com/demos/samples/sample.aac" type="audio/aac"/></audio><button ID="button" Disabled >Play</button><br><br><div ID="log"><div><hr></div></div>

SO上的代码段不起作用,因为它位于沙箱中.

看到这个工作example on codepen.io.

总结

以上是内存溢出为你收集整理的javascript – IOS上的HTML5音频:currentTime如何小于初始值?全部内容,希望文章能够帮你解决javascript – IOS上的HTML5音频:currentTime如何小于初始值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081935.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存