HTML5音频会在搜索

时间:2018-05-09 12:19:19

标签: javascript html5 audio html5-audio seekbar

我正在使用原生<audio>元素构建音频播放列表。 Somethimg是这样的:

HTML

<div class="audio-player">
  <audio id="audio" controls="controls">
    <source src="0.mp3" >       
  </audio>
  <button id="button0" data-track-url="0.mp3">Play 0</button>
  <button id="button1" data-track-url="1.mp3">Play 1</button>
  <button id="button2" data-track-url="2.mp3">Play 2</button>
</div>

按钮上有一些eventListeners。如果我单击其中一个按钮,则右侧mp3在音频元素中播放。

JAVASCRIPT

for (var i = 0; i < my_buttons.length; i++) {         
   my_buttons[i].addEventListener("click", buttonClickAction, false);       
}

我还在<audio>元素的播放和暂停事件中添加了一个eventListener,因此两个按钮(Native Play / Pause和<button>)具有相同的行为。

JAVASCRIPT

audio.addEventListener("play", audioPlayAction, false);
audio.addEventListener("pause", audioPauseAction, false);

现在我遇到以下问题:

如果按下按钮,则会开始播放等效音轨。如果我然后寻找本机播放器的时间栏,则<audio>元素会触发“暂停”和“开始”事件。是否有可能阻止“暂停/开始”事件在搜索时触发?或者是否可以将正常的“暂停/开始”事件与寻求“暂停/开始”事件区分开来?

我希望有一个解决方案。

问候

修改

因此,您可以看到我的问题到底是什么,请查看此代码段。在我开始寻找的那一刻,按钮上闪烁着:

var audio = document.getElementById("audio"),
    button = document.getElementById("button"),
    isPlaying = false;

var initPlayer = function() {
  audio.addEventListener("play", audioPlayAction, false);
  audio.addEventListener("pause", audioPauseAction, false);
  audio.addEventListener("seeking", audioSeekingAction, false);
  audio.addEventListener("seeked", audioSeekedAction, false);
  button.addEventListener("click", buttonClickAction, false);
},
buttonClickAction = function(event) {
  if(isPlaying){
    audio.pause();
    button.classList.add("is-playing");
  }else{
    audio.play();
    button.classList.remove("is-playing");
  }
},
audioPlayAction = function(event) {
  button.classList.add("is-playing");
  isPlaying = true;
  
},
audioPauseAction = function(event) {
  button.classList.remove("is-playing");
  isPlaying = false;
},
audioSeekingAction = function(event) {
  event.target.play()
},
audioSeekedAction = function(event) {
  event.target.play() 
};

initPlayer();
.button-pause {
  display:none;    
}
.is-playing .button-pause {
  display:inline-block;
}
.button-play {
  display:inline-block;
}
.is-playing .button-play {
  display:none;
}
<audio id="audio" controls="controls" preload="none" >
  <source src="https://archive.org/download/calexico2006-12-02..flac16/calexico2006-12-02d1t02.mp3" >		
</audio><br>
<button id="button">
  <span class="button-play">PLAY</span>
  <span class="button-pause">PAUSE</span>
</button>

0 个答案:

没有答案