最近想做一个通过点击或者mouseover触发 发出声音的效果。
网上很多代码,由于受到播放器组件、浏览器等条件影响,很难找到一个兼容的方法,
ie下很容易实现:
<embed id="realplayer" src="test.mp3" width=328 height=68 type="audio/x-pn-realaudio-plugin" controls="StatusBar,ControlPanel" autostart="flase" loop="true">
<a href="#" onclick="javascript:document.getElementById('realplayer').DoPlay();">Play</a>
<a href="#" onclick="javascript:document.getElementById('realplayer').DoPause();">Pause</a>
以上代码本人已在ie下通过测试,但firefox等浏览器下还没有找到相关方法,有高人指点下吗?为避免不必要的无用功,如果帖代码出来的话,最好是经过自己测试完全可用的,谢谢
真的找了很久,分不是很多,尽量给~~再次多谢各位了,在线等~~

解决方案 »

  1.   

      楼上的美女,你没弄懂我意思把?
    很明显,DoPlay()等方法是ie下的
    我是想问firefox浏览器下可以使用什么方法呢
      

  2.   

    用flash吧,那样就没有兼容性就好弄一点了
      

  3.   

    非ie就没js函数去控制了?
    用flash,那首先要把一些声音文件转换成flash列?
    能说下具体方法么,楼上这位大哥
      

  4.   

    flash可以播放flv文件的,有一个开源的东西叫aflax你去下载一下,里面有好多多媒体操作的例子,应该
    够你用的。
      

  5.   

    你看看 scriptaculous 效果库里的sound.js文件,基于Prototype,代码如下:Sound = {
      tracks: {},
      _enabled: true,
      template:
        new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'),
      enable: function(){
        Sound._enabled = true;
      },
      disable: function(){
        Sound._enabled = false;
      },
      play: function(url){
        if(!Sound._enabled) return;
        var options = Object.extend({
          track: 'global', url: url, replace: false
        }, arguments[1] || {});
        
        if(options.replace && this.tracks[options.track]) {
          $R(0, this.tracks[options.track].id).each(function(id){
            var sound = $('sound_'+options.track+'_'+id);
            sound.Stop && sound.Stop();
            sound.remove();
          })
          this.tracks[options.track] = null;
        }
          
        if(!this.tracks[options.track])
          this.tracks[options.track] = { id: 0 }
        else
          this.tracks[options.track].id++;
          
        options.id = this.tracks[options.track].id;
        $$('body')[0].insert( 
          Prototype.Browser.IE ? new Element('bgsound',{
            id: 'sound_'+options.track+'_'+options.id,
            src: options.url, loop: 1, autostart: true
          }) : Sound.template.evaluate(options));
      }
    };if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){
      if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 }))
        Sound.template = new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>')
      else
        Sound.play = function(){}
    }
    例子如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
      <title>script.aculo.us Sound functional test file</title>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <script src="../../lib/prototype.js" type="text/javascript"></script>
      <script src="../../src/scriptaculous.js" type="text/javascript"></script>
    </head>
    <body>
    <h1>script.aculo.us Sound test file</h1><a href="#" onclick="Sound.play('sword.mp3'); return false">play sound (parallel)</a><a href="#" onclick="Sound.play('sword.mp3',{replace:true}); return false">play sound (overwrite)</a><a href="#" onclick="Sound.disable(); return false">Mute</a>
    <a href="#" onclick="Sound.enable(); return false">Enable sounds</a></body>
    </html>
      

  6.   

    晕,楼上这位大哥,prototype.js、scriptaculous.js这2个js我这可没有,所以当然也运行不了你上面贴的代码了
    你试过,是兼容的么? 方便的话能把代码贴全么? 或者把例子的页面等文件发到我邮箱也行,邮箱:[email protected]
    谢了先
      

  7.   

    不过我前天倒觉得我这个方法还是比较行得通的,至少在ie、firefox、safari下都是通过的,其他几个浏览器也许是没有装Media插件的原因。
    <HTML>
      <BODY>
        <SCRIPT type="text/javascript">
          if(-1 != navigator.userAgent.indexOf("MSIE"))
          {
      document.write('<OBJECT id="Player"');
      document.write(' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"');
      document.write(' width=0 height=0 ><param name="URL" value="test.mp3" /><param name="AutoStart" value="false" /></OBJECT>');
          }
          else 
          {
      document.write('<OBJECT id="Player"');
      document.write(' type="application/x-ms-wmp"');
      document.write(' autostart="false" src= "test.mp3" width=0 height=0></OBJECT>');
          }
        </SCRIPT>
        <input type=button value="Play" onclick="Player.controls.play();">
    <input type=button value="Stop" onclick="Player.controls.stop();">
      </BODY>
    </HTML>
      

  8.   

    当然全支持了,http://script.aculo.us 下载个包,里面有例子的
      

  9.   

    http://script.aculo.us/dist/scriptaculous-js-1.8.1.zip
    这个,解压缩出来,里面有个test文件夹,你打开里面的html
      

  10.   

    我去看看,哥们有msn或者qq么?
    方便请教啊
      

  11.   

    问题依然无解啊朋友们,最近尝试了一个方法,就是利用flash调用外部声音,然后通过js与flash通讯来控制声音,
    但是现在又遇到问题
    1、要通过服务器上访问页面,才能顺利播放
    2、貌似不支持wav文件格式的声音
      

  12.   

    晕倒,CSDN的论坛Bug,回复没成功就再发一遍,居然出现了4篇回复