iOS / iPad-防止乱序执行JavaScript-audio.play()

时间:2019-02-10 05:43:08

标签: javascript ios ipad sequence order-of-execution

回复:https://xradio.us/start/time-place-pronounce.html

这是仅适用于iOS / iPad的问题。所需的onClick行为是播放简短的音频剪辑(发音),然后打开一个窗口进入Wikipedia页面。

这在Windows / Android中有效,但iOS却相反:打开Wikipedia页面,然后在Wikipedia关闭之后,它将播放音频文件。

Click Place Name or Button

我尝试setTimeout()延迟打开Wikipedia页面,但这使情况变得更糟,触发了弹出窗口阻止。尝试<AUDIO onended="window.open(wikiURL)" etc.>也会触发弹出窗口阻止。注意:仅JS代码的最后两行应与此问题相关。

<script>
    var mobile = "";
    if(window.innerWidth<1000) mobile = navigator.language.substr(0,2) + ".m.";

function go(wikiPlace) { 
    var x = wikiPlace.split('_(')[0];
    var myEle = document.getElementById(""+x+"");

    if(myEle) { myEle.volume = 0.6; myEle.play(); } 
    window.open('https://'+mobile+'wikipedia.org/wiki/'+wikiPlace);
}
</script>

<audio preload="none" id="Nevada" SRC="audio/xr-Nevada.mp3"></audio>  
<audio preload="none" id="Oregon" SRC="audio/xr-Oregon.mp3"></audio>
<audio preload="none" id="Tijuana_Municipality" SRC="audio/xr-Tijuana.mp3"></audio>

<div class="xbtn" onclick="go('Nevada')">NV</div>
<div class="xbtn" onclick="go('Oregon')">OR</div>
<nobr   id="tjP2" onclick="go('Tijuana_Municipality')">Tijuana<sup>mx</sup></nobr>

正确的行为:在显示前播放音频。 Windows和Android可以做到这一点。 iOS没有。

我希望先播放音频文件,然后再打开Wikipedia页面。相反,iOS浏览器会打开Wikipedia页面,并等待其关闭以播放音频文件。

0 个答案:

没有答案