我在网站上播放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秒后停止。
我确定我只播放一次声音,并且回声出现在不同的浏览器中。
有没有人知道如何发生这种情况?
答案 0 :(得分:0)
如果您在playSound
处理程序中呼叫click
,您的用户是否可以双击?在大多数浏览器中,双击会导致发生两个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>");
}
}
}
答案 1 :(得分:0)
你应该定义case isMozilla :
,因为很多浏览器都在使用UserAgent:Mozilla等...不仅仅是firefox浏览器,所以如果你使用chrome或其他类型的OS浏览器,他们可能会加载几个你的剧本。