当 HTML5 音频元素播放了一定百分比时运行函数
Run a function when an HTML5 Audio Element has played a certain %
当HTML5 Audio元素播放了一定数量(例如50%,80%)时,有什么方法可以运行预定义的功能吗?假设我知道文件的大小和其他任何东西。
<div class="audio-player" style="display:none;">
<audio id="music" preload="auto">
<source src="/path/to/my.mp3" type="audio/mp3">
</audio>
</div>
我已经在使用Javascript来播放/暂停此音频。
function aud_play_pause(_id) {
var audio = document.getElementById("music");
if (audio.paused) {
audio.play();
} else {
audio.pause();
}
}
因此,假设我有一个功能halfway()
来判断是否有人听了一半的歌曲,那么当曲目达到 50% 时,有什么方法可以运行它吗?即使这是一个估计,也没关系。我还想避免使用任何框架,因为我不需要任何额外的功能。
可能有更好的方法,但我可以看到你在HTML5中使用媒体元素的"持续时间"和"当前时间"属性。未经测试,但这可能会让您陷入困境:
function check(){
var duration = audioElement.duration;
var currentTime = audioElement.currentTime;
if( currentTime / duration >= 0.5 ){
halfway()
}
}
setInterval(check, 1000) //run this checker on an interval
使用 setTimout 怎么样?
像:
var relativeStopPosition = 0.5; // half-way
function aud_play_pause(_id) {
var audio = document.getElementById("music");
if (audio.paused) {
audio.play();
setTimeout(audio.pause.bind(audio), Date.now + relativeStopPosition * 1000* audio.duration ) ;
} else {
audio.pause();
}
}
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 当 HTML5 音频元素播放了一定百分比时运行函数
- 如何基于百分比机会运行IFJS逻辑
- 在WebView中运行JavaScript,而页面仍在加载-我可以得到进度百分比
- 根据百分比从一个rgba运行到另一个