Javascript : 获取当前播放的HTMLAudioElement

Javascript : Get the HTMLAudioElement currently playing

如何访问当前正在播放的 HTMLAudioElement,而我对此一无所知?它不是页面中的 <audio> 标记,它是

audio_element = document.createElement('audio');

但是现在(在我想让音频暂停的时候)DOM 已经被

修改了
$('#details').html('').load(ajax_loader, "id=" + id, function() {
    <!-- another playlist -->
}

而且我似乎无法取回我的 audio 元素。 它不再在 DOM 中,但音频仍在播放 很好顺便说一句,但现在我想播放其他内容。当我这样做时,我可以听到两个音频文件。

所以我的问题真的只是:如何在不知道 任何 的情况下访问当前正在播放的 HTMLAudioElement

如果您在创建音频元素时保留对音频元素的引用,您仍然可以通过该引用访问音频元素,然后清除该引用以将其作为垃圾回收。因此,一个使用全局变量的简单示例(不是好的做法,但您可以修改它以在您的模块中工作)是:

window.audio_element = document.createElement('audio');

之后

window.audio_element.pause();
window.audio_element = undefined;

这里是对 mozilla 文档的引用 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio and the WhatWG specification https://developers.whatwg.org/the-video-element.html#the-video-element

如果不引用,您无法访问元素

所以在那种情况下你有两种方法:

  • 将音频元素插入 DOM document.body.appendChild(document.createElement('audio')) 并通过 css display: none; 将其隐藏,然后您可以使用 document.getElementsByTagName('audio')[ 获取访问权限=27=]
  • 在某些范围内保存对音频元素的引用:window.audioElement = document.createElement('audio')

谢谢