微信浏览器中播放声音的正确姿势及html5中的audio标签

作者:袖梨 2022-06-25

标榜的正确姿势似乎还是不对。

状态是

wx.config({
    // 配置信息
});
wx.ready(function () {
    media.src = "/project/shake-money/img/shake.mp3"
    media.play();
});

代码放在一起是可以的,代码分开,或调用别的JS SDK,就不行了。
测试了很久,始终无法实现。想起了以前的WeixinJSBridge,测试了一下,竟然成了。

var media = document.getElementById("musicBox");
if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
    WeixinJSBridge.invoke('getNetworkType', {}, function (res) {
        // 在这里拿到 e.err_msg, 这里面就包含了所有的网络类型
        // alert(res.err_msg);
        media.play();
    });
}
前端就是这么蛋碎。
===========以上内容2016年4月15日===========

在实际项目中需要在微信浏览器中播放声音。所以学习了一下html5中播放声音的一些相关知识。iOS Safari 不允许自动播放 audio,只能通过用户交互触发。

了解了基本的声音播放的属性和时间,开始写代码,比如html:


js代码:

var media = document.getElementById("musicBox");
if (!media.src) {
    media.src = "/project/shake-money/img/shake.mp3"
}
media.play();
在pc浏览器下能正常播放,但是在微信页面中不行。尝试了好多姿势,就是播放不了声音。 想起了微信的JS SDK,找了一边也没有合适的接口。


实在没有办法了,索性在wx.ready(function () {...});中尝试了一下,结果成了!估计是微信浏览器做了一些特殊处理。

wx.config({
    // 配置信息
});
wx.ready(function () {
    media.src = "http://a.f265.com/project/shake-money/img/shake.mp3"
    media.play();
});

附:audio标签及属性

认真学习了一下html5重点audio标签及属性:

附:Media 事件

由媒介(比如视频、图像和音频)触发的事件(适用于所有 HTML 元素,但常见于媒介元素中,比如