我当前在网站上播放mp3文件时遇到问题。
我使用以下代码来播放mp3声音:
function playSound(url){
var userAgent = navigator.userAgent.toLowerCase();
var appVersion = navigator.appVersion.toLowerCase();
var appName = navigator.appName.toLowerCase();
var isOpera = (userAgent.indexOf('opera') != -1);
var isIE = (appName.indexOf('internet explorer') != -1) && !isOpera;
switch(true)
{
case isIE :
$("#soundSpan").html(" <bgsound src='"+url+"' />");
break;
default :
$("#soundSpan").html(" <embed src='"+url+"' type='audio/mpeg' autostart=true repeat=false loop=false hidden=true></embed>");
}
}这对我和大多数用户来说都很好,但一些用户抱怨听到了回声。这意味着他们多次听到相同的声音(超过两次)。声音非常短,从1秒到6秒不等。根据一些用户的说法,回声有时非常糟糕,以至于他们无法理解所说的话( mp3文件是口语句子)。回声通常在2-3秒后停止。
我确信我只播放了一次声音,并且回声已经出现在不同的浏览器中。
有谁知道这是怎么发生的吗?
发布于 2010-09-06 21:59:37
如果您在click处理程序中调用playSound,您的用户会双击吗?在大多数浏览器上,双击会导致发生两个click事件(除了dblclick事件;example)。你可能想要建立一些滞后效应--例如,在第一次点击之后,忽略第二次(第三次,第四次)点击声音500ms,诸如此类的事情。
编辑:示例:
var soundsPlayed = {};
function playSound(url){
var userAgent = navigator.userAgent.toLowerCase();
var appVersion = navigator.appVersion.toLowerCase();
var appName = navigator.appName.toLowerCase();
var isOpera = (userAgent.indexOf('opera') != -1);
var isIE = (appName.indexOf('internet explorer') != -1) && !isOpera;
var soundPlayed = soundsPlayed['p:' + url];
var now = new Date().getTime();
// If we haven't played this sound, or we haven't played it in the
// last half-second, go ahead and play it.
if (!soundPlayed || (now - soundPlayed) > 500) {
// Remember when we played it
soundsPlayed['p:' + url] = now;
// Play it
switch(true) // true??
{
case isIE :
$("#soundSpan").html(" <bgsound src='"+url+"' />");
break;
default :
$("#soundSpan").html(" <embed src='"+url+"' type='audio/mpeg' autostart=true repeat=false loop=false hidden=true></embed>");
}
}
}发布于 2010-09-06 22:00:55
你应该定义case isMozilla :,因为很多浏览器都在使用UserAgent: Mozilla等等。不仅仅是firefox浏览器本身,所以如果你使用chrome或其他类型的操作系统浏览器,他们可能会从你的脚本中加载几个案例。
https://stackoverflow.com/questions/3652005
复制相似问题