我有一个HTML5 元素,可以在点击时播放嵌入的音频文件。这就是代码的样子:
HTML:
<span class="sound">
<audio id="yourAudio" preload="none" onplay="playing(this);" onended="stopped(this);">
<source src="/sandboxassets/pronunciations/estest106f444b36e7b5fdb88a10706d397dc2.mp3" type="audio/mpeg">
</audio>
<a href="javascript:;" id="audioControl" onclick="playclip(this);" title="Hear it spoken">
<i class="fa fa-2x fa-volume-down pronounce"></i>
</a>
</span>
JS:
// play pronunciation file
function playclip(mp3){
mp3.parentNode.getElementsByTagName('audio')[0].play();
return false; // Prevent Default Action
}
function playing(thisicon){
// var icon = document.getElementsByClassName("pronounce")[0];
var icon = thisicon.parentNode.getElementsByClassName('pronounce')[0];
icon.className = "fa fa-2x fa-volume-up pronounce";
}
function stopped(thisicon){
// var icon = document.getElementsByClassName("pronounce")[0];
var icon = thisicon.parentNode.getElementsByClassName('pronounce')[0];
icon.className = "fa fa-2x fa-volume-down pronounce";
}
此设置在至少台式机浏览器中运行良好:Chrome,Edge和Opera(尚未在Safari,IE和Firefox上进行测试)。但是,点击在Android Android上无效。知道我哪里可能出错吗?该代码现已发布在www.peppyburro.com/sandboxdictionary/fugar。
此处存在具有完全相同标题的问题,但所提供的解决方案似乎不是我正在寻找的,因为我没有明确添加 .htaccess 密码保护我的网站。
答案 0 :(得分:5)
Android和iPhone触控事件
touchstart↔mousedown
touchend↔mouseup
touchmove↔ mousemove
touchcancel
document.getElementById('yourAudio').addEventListener("mouseup", tapOrClick, false);
document.getElementById('yourAudio').addEventListener("touchend", tapOrClick, false);
function tapOrClick(e) {
var mp3 = e.target;
mp3.parentNode.getElementsByTagName('audio')[0].play();
}