0

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

声音正在播放,但在 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");
4

2 回答 2

1

如果您愿意要求用户拥有 Flash,我推荐SoundManager2。它在后台使用 Flash,但完全通过 JavaScript 进行配置,并且非常可定制。

如果您想在浏览器中完全以本机方式执行此操作,您可以使用该<audio>标记,但您会发现它仅适用于最新的浏览器,并且您仍然会遇到一些跨浏览器问题。这篇 Ajaxian 文章很好地概述了如何做到这一点以及哪些浏览器支持哪些音频格式。

PS 个人意见,如果你不介意的话:不要在没有事先询问用户的情况下播放背景声音或音乐。从不自动播放,并始终为用户提供停止或静音的选项。

于 2009-12-10T19:17:01.883 回答
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 来做到这一点。

再次感谢!

于 2009-12-10T20:10:41.983 回答