📜  HTML |音频视频 DOM 暂停事件(1)

📅  最后修改于: 2023-12-03 15:01:15.979000             🧑  作者: Mango

HTML音频视频DOM暂停事件

HTML5中引入了<audio><video>元素来实现播放音频和视频。DOM事件使得我们可以控制这些媒体元素的行为。其中一个重要的事件是pause事件。

监听暂停事件

要监听暂停事件,我们可以使用addEventListener方法:

let mediaElement = document.querySelector('audio');
mediaElement.addEventListener('pause', function() {
  console.log('Media paused');
});

这将在媒体元素暂停时触发一个消息。

更新播放器状态

我们可以根据媒体元素的paused属性来更新播放器的状态:

let mediaElement = document.querySelector('audio');
let playButton = document.querySelector('.play-button');
let pauseButton = document.querySelector('.pause-button');

playButton.addEventListener('click', function() {
  mediaElement.play();
  playButton.classList.add('hidden');
  pauseButton.classList.remove('hidden');
});

pauseButton.addEventListener('click', function() {
  mediaElement.pause();
  pauseButton.classList.add('hidden');
  playButton.classList.remove('hidden');
});

mediaElement.addEventListener('play', function() {
  playButton.classList.add('hidden');
  pauseButton.classList.remove('hidden');
});

mediaElement.addEventListener('pause', function() {
  pauseButton.classList.add('hidden');
  playButton.classList.remove('hidden');
});

我们还可以使用媒体元素的属性,如durationcurrentTimevolume,来控制播放器的状态:

let mediaElement = document.querySelector('audio');
let volumeControl = document.querySelector('.volume-control');
let seekBar = document.querySelector('.seek-bar');

mediaElement.addEventListener('timeupdate', function() {
  let percentComplete = (mediaElement.currentTime / mediaElement.duration) * 100;
  seekBar.style.width = percentComplete + '%';
});

volumeControl.addEventListener('input', function() {
  mediaElement.volume = volumeControl.value;
});

seekBar.addEventListener('click', function(event) {
  let rect = seekBar.getBoundingClientRect();
  let x = event.clientX - rect.left;
  let percentage = x / rect.width;
  mediaElement.currentTime = mediaElement.duration * percentage;
});

这将使得我们可以控制媒体元素的音量和当前播放时间。

结论

HTML音频视频DOM暂停事件可以让我们对媒体元素进行更精细的控制。我们可以通过监听暂停事件来更新播放器的状态,并使用媒体元素的属性来控制播放器的行为。