Javascript:获取当前正在播放的HTMLAudioElement

时间:2015-01-23 12:04:46

标签: javascript jquery html5 dom audio

如何在不知道任何内容的情况下访问当前正在播放的HTMLAudioElement?它不是页面中的<audio>标记,而是

audio_element = document.createElement('audio');

但现在(当我希望音频暂停时),DOM已被

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

我似乎无法找回我的audio元素。 它不再在DOM中,但音频仍在播放女巫很好BTW,但现在我想玩别的东西。当我这样做时,我可以听到两个音频文件。

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

2 个答案:

答案 0 :(得分:1)

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

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和WhatWG规范https://developers.whatwg.org/the-video-element.html#the-video-element

的引用

答案 1 :(得分:1)

无法访问元素而无需参考

因此,在这种情况下,您有两种方式:

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

由于