Javascript 播放mp3时听到回声
我目前在网站上播放mp3文件时遇到问题 我正在使用以下代码播放mp3声音:Javascript 播放mp3时听到回声,javascript,html,mp3,Javascript,Html,Mp3,我目前在网站上播放mp3文件时遇到问题 我正在使用以下代码播放mp3声音: function playSound(url){ var userAgent = navigator.userAgent.toLowerCase(); var appVersion = navigator.appVersion.toLowerCase(); var appName = navigator.appName.toLowerCase(); var isOpera
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秒后停止
我确信我只播放了一次声音,而且回声出现在不同的浏览器中
有人知道这是怎么发生的吗?如果您在单击处理程序中调用playSound,您的用户会双击吗?在大多数浏览器上,双击会导致除dblclick事件之外发生两次单击事件。你可能想要建立一些迟滞-例如,忽略第二次,第三次,第四次点击声音500毫秒后,第一次点击,诸如此类的事情
编辑:示例:
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>");
}
}
}
您应该定义case-isMozilla:因为许多浏览器都在使用UserAgent:Mozilla等等。。。不仅是firefox浏览器本身,因此如果您使用chrome或其他类型的操作系统浏览器,它们可能会从您的脚本加载多个案例。您在哪里调用playSound?何时调用playSound函数?在哪里以及如何定义“isMozilla”?许多UserAgent包含一个“Mozilla”string@BatchyX:这是一个很好的观点,但由于它也是默认值,因此实际上并不重要-playSound大多数时间是通过计时器调用的。我删除了isMozilla行,因为它不需要。这与其说是一个答案,不如说是一个评论。而且,代码并不是没有处理isMozilla事件;事实上,默认的JavaScript,如C和C++,默认情况下从一个case块到下一个块。唯一特别的分支是伊西。我不小心删除了这一行,当我把它清理到这里后。但我猜“case isMozilla”这句话也不相干。大多数时候声音都是用定时器播放的。有时会使用click处理程序,但回音会同时出现在situations@xta:嗯。仍然值得为它添加一点处理,看看这是否会有所不同;这非常简单,我在上面添加了一个示例。我将尝试等待我的用户进行测试,因为我自己无法复制它。但这并不能解释为什么只有前几秒钟的声音在回响。@xta:啊,我没意识到我以为声音很短。是的,没有。祝你好运!