首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放mp3时听到回声

播放mp3时听到回声
EN

Stack Overflow用户
提问于 2010-09-06 21:53:29
回答 2查看 173关注 0票数 0

我当前在网站上播放mp3文件时遇到问题。

我使用以下代码来播放mp3声音:

代码语言:javascript
复制
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秒后停止。

我确信我只播放了一次声音,并且回声已经出现在不同的浏览器中。

有谁知道这是怎么发生的吗?

EN

回答 2

Stack Overflow用户

发布于 2010-09-06 21:59:37

如果您在click处理程序中调用playSound,您的用户会双击吗?在大多数浏览器上,双击会导致发生两个click事件(除了dblclick事件;example)。你可能想要建立一些滞后效应--例如,在第一次点击之后,忽略第二次(第三次,第四次)点击声音500ms,诸如此类的事情。

编辑:示例:

代码语言:javascript
复制
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>");
      }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2010-09-06 22:00:55

你应该定义case isMozilla :,因为很多浏览器都在使用UserAgent: Mozilla等等。不仅仅是firefox浏览器本身,所以如果你使用chrome或其他类型的操作系统浏览器,他们可能会从你的脚本中加载几个案例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3652005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档