我有一个mp3文件,我想在打开网站时自动播放。在同一页面上,有一个按钮(图标),如果点击," cut"声音(实际上暂停它),如果你再次点击它,声音会播放(从它停止的地方)等等......
HTML页面:
<body>
...
...
<audio id="sound" src="<?php echo $song; ?>" autoplay="autoplay" loop="loop"></audio>
<div id="sound_button" onClick="playpause()"><img id="snd_btn" src="/images/On32.png" /></div>
...
...
JavaScript的:
function playpause() {
var snd = document.getElementById("sound");
var snd_btn = document.getElementById("sound_button");
snd.muted = !snd.muted;
//var snd_mut = 0;
if(snd.muted){
snd_btn.innerHTML = "<img src='/images/Off32.png' />";
snd.pause();
}
else {
snd_btn.innerHTML = "<img src='/images/On32.png' />";
snd.play();
}
//if (snd_mut != 0) {
//snd.innerHTML="<embed src='<?php echo $song; ?>' hidden='true' autostart='true' loop=true>";
//snd_mut = 0;
//}
//else {
//snd.innerHTML="<embed src='<?php echo $song; ?>' hidden='true' autostart='false' loop=true>";
//snd_mut = 1;
//}
}
在Windows中,在所有主要浏览器(IE,FF,Chrome,Opera和Safari)上打开网站时,一切正常:要播放的歌曲会自动启动并可以听到(无需任何其他操作)。< / p>
在Android上,无论是在操作系统的隐式浏览器上还是在FF和Chrome上,我都面临以下情况:我必须单击按钮(就像我想要停止声音一样)然后再次单击它(如如果我想再次听到它,那么歌曲就会开始。
我不明白为什么,特别是为什么这只发生在Android上。如果Android没有支持mp3格式,我认为不应该听到任何声音(尽管上面描述了很少的&#34;技巧&#34;)
有没有黑客攻击?我错过了什么或者我能做些什么来解决这个问题?
非常感谢。
PS。你认为直接在javascript中创建和操作元素会有所帮助吗? - 虽然我不太清楚怎么做,但是......
答案 0 :(得分:0)
原因是,移动浏览器是以这样的方式构建的,它们允许播放声音或其他通过JS控制的事情,而不是自动执行用户操作。
有一种解决这个问题的黑客方法,你可以使用一个库,例如使用声音精灵的“Howler.js”。 所以你可以在开始时用静音创建一个声音文件。让用户单击按钮访问应播放声音的网站。 只需单击按钮,您就可以“初始化”声音文件。 你使用咆哮来播放声音精灵中的一个静音。此时播放声音是用户操作,使用Howler,您现在可以在任意位置启动声音精灵文件达到所需长度,并且仍然可以识别为用户操作。
我希望我能解释一下,这样你才能明白我的意思。