播放声音而无需安装媒体播放器扩展

时间:2009-12-10 19:11:01

标签: javascript media wav audio-player

我想在拍卖网站上嵌入声音。我希望每次有人出价,都会播放声音。我尝试了一个带有给定ID的简单<embed>标记,然后通过javascript尝试了sound.play()

声音正在播放,但在IE中,新用户被要求安装媒体播放器扩展“如果他/她信任该网站”。

有没有办法让它在没有这条消息的情况下播放。以下代码位于页面中:

在HTML中:

<embed src="success.wav" autostart="false" width="0" height="0" id="sound1" 
       enablejavascript="true">

在Javascript中:

function PlaySound(soundObj) {

  var sound = document.getElementById(soundObj);
  sound.Play();
}

对函数的调用:

PlaySound("sound1");

2 个答案:

答案 0 :(得分:1)

如果您觉得要求用户使用Flash,我建议使用SoundManager2。它在后台使用Flash,但完全通过JavaScript配置,并且可以自定义。

如果你想在浏览器中完全本地化,你可以使用<audio>标签,但你会发现它只适用于最新的浏览器,而且你还有一些跨浏览器问题'重新开始。 This Ajaxian article概述了如何操作以及哪些浏览器支持哪种音频格式。

P.S。个人意见,如果你不介意:不要先询问用户,不要播放背景音或音乐。永远不要自动播放并始终为用户提供停止或静音的选项。

答案 1 :(得分:1)

这个解决方案在声音管理器2中运行得很好。尽管整个安装文件是2.8mb,但我认为其实际使用的只有一小部分。

我所做的是将以下代码放在标题中:

<script type="text/javascript">

soundManager.url = '<?php echo $root_address; ?>/js/soundmanager/swf/'; 
soundManager.debugMode = false;

soundManager.onload = function() {
  var mySound = soundManager.createSound({
    id: 'aSound',
    url: '<?php echo $root_address; ?>/success.mp3'
  });
}
</script>

使用以下代码将调用替换为播放声音函数:

soundManager.play('aSound');

我使用最简单的API来完成它。

再次感谢!