用于检查html5音频元素当前正在播放的javascript api是什么?
答案 0 :(得分:130)
function isPlaying(audelem) { return !audelem.paused; }
音频标记具有paused
属性。如果它没有暂停,那么它正在播放。
答案 1 :(得分:33)
您可以查看持续时间。如果持续时间超过0秒并且没有暂停,则播放。
var myAudio = document.getElementById('myAudioID');
if (myAudio.duration > 0 && !myAudio.paused) {
//Its playing...do your job
} else {
//Not playing...maybe paused, stopped or never played.
}
答案 2 :(得分:10)
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false);
应该做的伎俩。
答案 3 :(得分:8)
虽然我在这个帖子中已经很晚了,但是我使用这个实现来判断声音是否正在播放:
service.currentAudio = new Audio();
var isPlaying = function () {
return service.currentAudio
&& service.currentAudio.currentTime > 0
&& !service.currentAudio.paused
&& !service.currentAudio.ended
&& service.currentAudio.readyState > 2;
}
我认为除了就绪状态之外,音频元素上的大多数标志都是显而易见的,你可以在这里阅读:MDN HTMLMediaElement.readyState。
答案 4 :(得分:3)
试试这个功能! 如果位置是开头或结尾,则不会执行音频播放
function togglePause() {
if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
myAudio.play();
} else {
myAudio.pause();
}
}
答案 5 :(得分:1)
试试这个代码:
var myAudio = document.getElementById("audioFile");
function playAudio() {
//audio.play();
//console.log(audio.play())
if (myAudio.paused && myAudio.currentTime >= 0 && !myAudio.started) {
myAudio.play();
console.log("started");
} else {
myAudio.pause();
}
}
答案 6 :(得分:0)
要检查音频是否真的开始播放,特别是如果您有音频,请检查audio.played.length
至1
。仅当音频真的是开始声音时才会为1。否则将是0
。它更像是一个黑客攻击,但即使在Safari和Chrome等移动浏览器中仍然有效。
答案 7 :(得分:0)
您可以使用onplay事件。
var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};
或
var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };
答案 8 :(得分:0)
在此jquery代码中使用拖曳按钮来停止和播放,播放按钮是播放和暂停按钮
const help_p = new Audio("audio/help.mp3");//Set Help Audio Name
$('#help_play').click(function() {//pause-Play
if (help_p.paused == false) {
help_p.pause();//pause if playing
} else {
help_p.play();//Play If Pausing
}
});
$('#help_stop').click(function() {//Stop Button
help_p.pause();//pause
help_p.currentTime = 0; //Set Time 0
});
答案 9 :(得分:0)
我想知道这段代码是否可行,结果令人惊讶:
if (a.paused == false) {
/*do something*/
}
或者你可以写成:
if (!a.paused == true) {
/*do something*/
}
如果你想让你的 IDE 在 JSfiddle 中惹恼你。
答案 10 :(得分:-2)
虽然没有名为isPlaying的方法或类似方法,但有几种方法可以实现这一点。
此方法在播放音频时获得进度百分比:
function getPercentProg() {
var myVideo = document.getElementById('myVideo');
var endBuf = myVideo.buffered.end(0);
var soFar = parseInt((endBuf / myVideo.duration) * 100);
document.getElementById('loadStatus').innerHTML = soFar + '%';
}
如果百分比大于0且小于100,则表示正在播放,否则会停止播放。