解决 Apple 设备不能自动播放 Audio 问题

在 safri 里面明确指出等待用户的交互动作后才能播放 media,也就是说如果你没有得到用户的 action 就播放的话就会被 safri 拦截,所以我们要用一些事件来控制
touchstart 事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
touchmove 事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用 preventDefault() 事件可以阻止滚动。
touchend 事件:当手指从屏幕上离开的时候触发。
touchcancel 事件:当系统停止跟踪触摸的时候触发。关于这个事件的确切出发时间,文档中并没有具体说明,咱们只能去猜测了。

先要去监听 touchstart 事件,当用户触摸屏幕的时候去执行 playAudio 方法,同时监听播放事件,播放的时候移除 touchstart 的监听。

 var audio = document.getElementById("audio");
 window.addEventListener('touchstart', playAudio, false);
 audio.addEventListener('play', function () {
    window.removeEventListener('touchstart', playAudio, false);
}, false);

function playAudio() {
    if (audio.paused) {
        audio.load();
        audio.play();
    } else {
        audio.pause();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,548评论 1 11
  • 本节介绍各种常见的浏览器事件。 鼠标事件 鼠标事件指与鼠标相关的事件,主要有以下一些。 click 事件,dblc...
    许先生__阅读 2,521评论 0 4
  • 最近娱乐圈的新闻很多,本以为一个月过去了,王宝强和马蓉的离婚案也该有个结果了,可是却网爆马蓉“自杀”了。 是意料之...
    郝小糖阅读 821评论 0 0
  • 在以苗条出名的娱乐圈里胖的明星真的不多,但她们也不想一直胖下去,都会千方百计的减肥。谁不想变得美美的出现在观众面前...
    小小娱乐阅读 579评论 0 0
  • 之前聊过和“需求”有关的一些事实 ,也定义了“需求”、“拥有者”、“利益相关者”、“产品”这样一些概念。 我们一直...
    不羁小生阅读 619评论 2 3