【问题标题】:Playing sound with JavaScript用 JavaScript 播放声音
【发布时间】:2011-03-25 02:09:49
【问题描述】:

不管我做什么,我根本无法让它在 Firefox 或 IE 或 Chrome 中播放声音。

<html>
<head>
<script type="text/javascript">

    function play() 
 {
     var embed = document.createElement('object');

     embed.setAttribute('src', 'c:\\test.wav');
     embed.setAttribute('hidden', true);
     embed.setAttribute('autostart', true);
     embed.setAttribute('enablejavascript', true);

     document.childNodes[0].appendChild(embed);

 }

// -->
</script>
</head>
<body onload="play();">
</body>
</html>

【问题讨论】:

  • 请不要在页面加载时自动播放背景声音。这是网页可以做的最烦人的事情之一(请参阅seomoz.org/blog/…)。至少可以选择静音。
  • 您的一个问题是\t 是制表符。
  • 修复了 \t 的问题,但仍然没有运气。

标签: javascript html audio


【解决方案1】:

尝试使用这个修改后的函数 play()

function play() 
{
  var embed=document.createElement('object');
  embed.setAttribute('type','audio/wav');
  embed.setAttribute('data', 'c:\test.wav');
  embed.setAttribute('autostart', true);
  document.getElementsByTagName('body')[0].appendChild(embed);
}

您的代码的问题是您使用了 src 属性,该属性用于 标记。相反,请使用 标记的 data 属性。



如果您试图从中获得最大的兼容性,您还应该考虑添加 embed 标签作为 object 标签的替代品。它的工作方式是这样的:

<object data="test.wav" type="audio/wav" autostart="true">
<embed src="test.wav" autostart="true" alt="Could not load audio" />
</object>

这类似于 noscript 标签,不支持 object 标签的旧浏览器使用 embed 标签。

【讨论】:

  • 你确定你有一个有效的 WAV 文件吗?我在发布之前在我的电脑上测试了我的代码,它在谷歌浏览器上完美运行。尝试将 test.wav 文件与 html 文件放在同一目录中,并将数据属性设置为“test.wav”。另外,能否告诉我您使用的是哪种浏览器,以便我检查自己?
  • 好的,我将文件移动到同一个文件夹中,它可以在 google chrome 上播放,但不能在 firefox 上播放。我实际上只需要它在 Firefox 中工作。
  • 我很高兴它现在可以在 Google Chrome 上为您工作。我认为它不能在 Firefox 上播放的原因是安全限制。例如,当我从计算机本地运行代码时,它不起作用。但是,我上传了它goo.gl/gjjd,它似乎工作正常(由于主机的原因略有延迟)。让我知道你会发生什么。
【解决方案2】:

仅供参考,使用 &lt;embed&gt; 标签会使您的代码无效。目前,如果您想在网页上播放声音,您有两种选择:[1] 使用当今大多数浏览器都可以使用的方法,但会使您的 HTML 无效(使用 &lt;embed&gt;) , 或 [2] 使用仅适用于某些最新浏览器的方法,但将来会采用这种方法,并且也被认为是有效的 HTML(使用 &lt;audio&gt; 或 @ 987654324@).

【讨论】:

    【解决方案3】:

    试试这个方法,在所有浏览器中播放声音:

    function playSound(soundfile_ogg, soundfile_mp, soundfile_ma) {
        if ("Audio" in window) {
            var a = new Audio();
            if (!!(a.canPlayType && a.canPlayType('audio/ogg; codecs="vorbis"')
                    .replace(/no/, '')))
                a.src = soundfile_ogg;
            else if (!!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/,
                    '')))
                a.src = soundfile_mp;
            else if (!!(a.canPlayType && a.canPlayType(
                    'audio/mp4; codecs="mp4a.40.2"').replace(/no/, '')))
                a.src = soundfile_ma;
            else
                a.src = soundfile_mp;
    
            a.autoplay = true;
            return;
        } else {
            alert("Time almost up");
        }
    }
    

    要播放声音,请执行以下操作:

    playSound("/file/horse.wav", "/file/horse.mp3","/file/horse.m4a");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2021-05-31
      • 2022-08-05
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多