使用音频对象将在iframe中创建的音频静音

时间:2019-05-24 07:49:48

标签: javascript audio iframe

我正在使用DATA_SOURCE = "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps" ,其中包含我们从第三方收到的代码。该第三方代码包含一个DATA_SOURCE = "derived:com.google.calories.expended:com.google.android.gms:merge_calories_expended" 并包含一个使用Phaser创建的游戏。

我正在寻找一种使游戏某些时候的声音静音的方法。

我们通常采用这种方式:

iframe

经过一番研究,我发现您可以使用Canvas在网页中播放声音,然后在创建的对象上调用function mute(node) { // search for audio elements within the iframe // for each audio element,(video, audio) attempt to mute it const videoEls = node.getElementsByTagName('video'); for (let i = 0; i < videoEls.length; i += 1) { videoEls[i].muted = true; } const audioEls = node.getElementsByTagName('audio'); for (let j = 0; j < audioEls.length; j += 1) { audioEls[j].muted = true; } } 方法。 我们使用的new Audio([url])函数的问题在于,如果声音是用play创建的,则声音不会被拾取。

有没有一种方法可以从容器中列出在文档中创建的所有mute元素,或者只是不可能,并且可以创建一种播放音频的方式,而不会让iframe容器将其静音?

1 个答案:

答案 0 :(得分:1)

没有,没有办法。

他们不仅可以像您猜到的那样使用未附加的

您最好的举动是问这个游戏的开发者,它公开了一个您可以控制它的API。
例如,它可能是URL(https://thegame.url?muted=true)中的某些查询参数,甚至是基于Message API的API,您都可以在自己的页面中执行iframe.contentWindow.postMessage({muted: true})