我想问下我使用html5的音频播放消息提示音的时候、电脑上的网页有声音、但是手机上没声音、但是我自己去测试了一下、我写了一个点击事件、就是手机点击的时候播放有声音、
var audio = new Audio('music/msg.mp3');
$(function () {
$('#muc').on('click', function () {
audio.play();
})
setTimeout(function () { $("#muc").click(); alert(audio) }, 3000);
})
用js去调用的时候没声音、但是用手点击的时候就可以、这是什么原因呢?
改为下面的代码试试:
setTimeout(function () { audio.play(); }, 3000);
不行、我试了、非得自己用手去点手机才会响、代码调用的话没反应、不知道为什么会这样、必须对手机有操作、直接用js调用audio.play();方法不行、没声音、但是电脑上可以、在手机上不行、
在网上找了很久有个人说html5里面的audio必须要与手机有交互。。。才行、不知道为毛
@fanzhengshao: 改为下面的方式播放试试:
var audioElement = document.createElement('audio'); audioElement.setAttribute('src', 'music/msg.mp3'); audioElement.play();
@dudu: 我组长安卓4.1的可以、我的4.4不行、但是我写个点击事件去调用播放的方法又有声音
还是不行耶
这个到底是什么原因呢?我的手机是安卓4. 我在ios上也测试了还是不行、
移动端一个audio对象的第一次播放,必须是一个用户触发的行为。
可以给body一个点击事件,在事件里处理,点击播放 H5 的audio标签目前是这个模式
这是我找了好久看到的这么一句话、
@fanzhengshao: 这样的限制也合理,打开网页自动音频的确不好
@dudu: 但是我想实现一个功能、就是有新消息的时候有声音提示。。。。。岂不是弄不了?
@fanzhengshao: 最好别弄,这不是提示用户,这是赶走用户。
@dudu: 晕死、我这是做的聊天啊。。。。我做的是移动web项目、里面有个即时聊天嘛、现在就差声音提示了、而且声音提示用户可以在设置里面打开和关闭的
@dudu: 弄不了吗?难道只能在安卓外壳里面做动作了?这样一来人家用浏览器访问的时候岂不是又没声音了
@dudu: 解决不了吗?不过还是大神的指点、太谢谢了、
@dudu: 大神:这句话怎么理解、具体怎么操作呢?
这里有个问题,IOS是不能自动播放音乐的,一定要触发一个用户交互事件,例如点击。
但是有一种hack的方法可以让IOS微信侧页面自动播放(SAFARI依旧无效):
通过new一张图片,监听一张图片的onload事件,结束后回调执行音频播放audio.play()即可,原理估计是动了dom结构,相当于执行了一次交互。(有人也用过createEvent模拟,原理也是动了dom。)
@fanzhengshao: 试试howler.js,https://github.com/goldfire/howler.js
@dudu: 不大会用、而且好像不行、不管是什么格式的音频都不行啊、就算他会自动转、现在的事情就是必须要有一次交互
@dudu: 用js怎么模拟交互?比如我想模拟点击了一下屏幕
@fanzhengshao: 试试下面的代码:
var link = document.getElementById( 'link_to_click' ), event = document.createEvent( 'HTMLEvents' ); event.initEvent( 'click', true, true ); link.dispatchEvent( event );
@dudu: 好吧、大神、辛苦你了、感谢你不留余力的为我解答、但是还是不行、电脑上可以、在手机上就不行了、必须要我手动点击它才可以。。。我也是醉了、
在安卓上是可以播放的,Ios上貌似手动点才能播放的。之前有同学弄过
我组长安卓4.1的可以、我的4.4不行、但是我写个点击事件去调用播放的方法又有声音
搞不掂啊、如何在手机上消息声音提醒呢?