关于ios上audio的思考

前端入坑纪 34

Up主最近接手了一个HTML5的小游戏,一切都很顺利,直到遇到ios。

人生太多不确定,何况还是前端,更是体会深切啊。

<audio hidden id="yao" src="007.ogg"></audio>
<a id="szBtn" href="javascript:;"></a>

var szBtn = document.getElementById("szBtn");
var yaudio = document.getElementById("yao");

szBtn.addEventListener("touchstart", function() {      
            yaudio.play();
        });

这里代码很清晰,就是有个按钮和音频,逻辑也就是点击按钮触发播放音频。
这很好,安卓上一切正常,可是一遇到ios就不起作用了。

所以,剩下的就是百度,google,国内国外网站上了一个遍。最后得出的结论是,ios只有在用户真正的交互发生才会触发播放音乐。这就让我很迷了,touchstart不就是用户在交互了吗?逗我玩吗?

无奈的我只能继续百度了,幸运的在简书里看到了一篇相关文。因为是在微信里执行这个HTML5游戏的,所以符合下面的代码

document.addEventListener("WeixinJSBridgeReady", function() {
            yaudio.load();
        }, false);

上面就是要在等微信JSBridge准备好后,加载这个音频文件。那样就可以排除用户点击了按钮,没声音是文件还没加载好的锅。

然而,事实并非如此简单,我这边依旧无效.......没有声音......

最后,看到这里的你一定也猜到了。既然我都发文上来了,一定是解决了。是的,皇天不负苦心人,我把ogg换成了mp3,就全好了。

我的内心其实是很奔溃的,为什么呢?

你懂的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,221评论 25 709
  • 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次扫印出每一个数字。 代码如下: 来源:http://blog.c...
    3e1094b2ef7b阅读 1,566评论 0 1
  • 翻着韩寒的《我所理解的生活》,在窗边的阳光下,一杯暖茶,一纸书,悠闲惬意,今年会坚持来简书,会坚持读书,坚持运动,...
    默许苍微阅读 1,261评论 0 0
  • 今天写的早一些,要不然会猝死。。。。。 现在越来越觉得语言真是个美好的东西。这些不同的说话方式,说出同一个意思,很...
    doubleDutch阅读 2,241评论 0 0