先上代码:
var audio = document.createElement("audio");
if (audio != null){
audio.src = "data:audio/mpeg;base64,"+value.voice;//服务器传过来的mp3的JSON数据
if (audio.paused) { //判读是否播放
audio.play(); //没有就播放
}
}
问题:当接收到服务器发过来的消息的时候,自行创建audio标签,然后播放声音,我在做一个html5的web应用,不能够在html中标签创建audio,也就是背景乐相当于。此代码在PC端正常,有声音,但是到了移动端的时候,就没有声音了,我使用了vivo v3MAX ,iphone4s 来测试,都没声音。我想到的可能的原因有两个,一个是我查阅了很多资料,资料显示Android和IOS不支持autoplay的属性,有各种按钮,监听触摸等等的事件方法绕过此限制,但是给用户的体验不好 ,背景乐还要老是让用户触发事件。第二种原因可能是权限的问题,我使用其他app的时候总是手机自动提醒我是不是要给予声音,访问,照相等等的权限,这个提醒可能是系统或者是类似防火墙软件的提示,但是在Html网页中没有提示。
有没有大神遇到类似问题,或者求解决啊。。。。。
这个不需要添加到dom里么。求大神解答。
放在canplay或canplaythorugh事件里面试试。
再者这个节点是要放在dom里面吧。
经过自己测试:
1、HTML创建Audio(autopaly controls):PC----OK
MOBILE----:OK
2、HTML创建Audio(autopaly):PC----OK
-------->总结:moible不支持autoplay
MOBILE----:NO
3、HTML创建Audio(autopaly controls ),Script设置Souce的SRC : :PC----OK
-------->总结:支持动态设置路径(Audio和Source 都可以)
MOBILE----:OK
4、HTML创建Audio(autopaly ),Script设置Souce的SRC : :PC----OK
-------->总结:moible不支持autoplay
MOBILE----:no
5、alert(audio.autoplay):
PC----: 设置时为true;;不设置时为false;
设置autoplay不设置对mobile没影响 参数的boolean值没矛盾就是被屏蔽了
MOBILE----:设置时为true;;不设置时为false;
6、动态创建audio(document.createElement('audio')):PC----OK;
总结:默认audio.autoplay为false 不能自动播放,play()方法也拯救不了MOBILE;
MOBILE----:NO
7、 总结: var audio=document.createElement('audio');
audio.src='aaa.mp3';
window.addEventListener('touchstart', function(){
audio.play();
}, false);
问题解决了;