[英]Detect audio element not added to DOM
我想知道如何在播放前检测未添加到 DOM 的“音频”元素。 创建元素的代码是:
var snd = new Audio("short.mp3");
snd.volume = 1;
snd.play();
音频源可能会改变。
稍后,当可以听到所选选项卡时,我将使用 chrome 扩展将一些 JS 注入页面。 然后代码应该运行并使用音频源执行 console.log 。
如何检查从未添加到 DOM 的有关此元素的内容?
PS:我无法更改播放音频的代码。
编辑:稍后发现: PhilHoy 的这个答案与我所做的完全一样,而没有向音频原型添加另一个功能。 我写这篇文章时对apply
还不够熟悉,但想法是一样的。
详细说明 Daniel Herr 的评论:
您可以覆盖音频构造函数
在网上环顾四周,我找不到比这更好的答案。 You said, "...when the selected tab is audible. Then the code should run..." so I elected to overwrite the play
method instead. 本质上,我只是:
play
方法的引用Audio.prototype.overwrite_play = Audio.prototype.play
Audio.prototype.play = function() {
console.log(this.src)
return this.overwrite_play(arguments);
}
如果将play
分配给任意变量,则会出现以下错误: 'play' called on an object that does not implement interface HTMLMediaElement.
所以我选择只将方法overwrite_play
添加到Audio
本身的原型中。 无论如何,这给了我一个引用特定Audio
对象的this
,所以我可以直接使用this.src
。 只有其他问题是我很确定这仅适用于通过new Audio
创建的音频源,而不是嵌入的 HTML 音频元素。
可能有更简洁的方法来处理这个问题,但它似乎适用于我的一个用例(向特定选项卡添加音量滑块)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.