首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • js控制声音(浏览器兼容问题),在线等~~~
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 12:09:28 楼主
    最近想做一个通过点击或者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等浏览器下还没有找到相关方法,有高人指点下吗?为避免不必要的无用功,如果帖代码出来的话,最好是经过自己测试完全可用的,谢谢
    真的找了很久,分不是很多,尽量给~~再次多谢各位了,在线等~~
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 12:35:401楼 得分:0
    很简单:

    先在各个浏览器中播放正常后 ,在去书写代码。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 12:55:452楼 得分:0
      楼上的美女,你没弄懂我意思把?
    很明显,DoPlay()等方法是ie下的
    我是想问firefox浏览器下可以使用什么方法呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 13:37:283楼 得分:0
    来人啊 来人啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 13:51:084楼 得分:0
    引用 1 楼 tantaiyizu 的回复:
    很简单:

    先在各个浏览器中播放正常后 ,在去书写代码。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 14:39:285楼 得分:0
    用flash吧,那样就没有兼容性就好弄一点了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 14:54:306楼 得分:0
    非ie就没js函数去控制了?
    用flash,那首先要把一些声音文件转换成flash列?
    能说下具体方法么,楼上这位大哥
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 15:26:237楼 得分:0
    顶顶!~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 19:00:308楼 得分:0
    flash可以播放flv文件的,有一个开源的东西叫aflax你去下载一下,里面有好多多媒体操作的例子,应该
    够你用的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 21:36:089楼 得分:0
    有高人指点下吗
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 21:36:2910楼 得分:0
    ,应该
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 21:36:4211楼 得分:0
    很难找到一个兼容的方法,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 00:56:0512楼 得分:0
    你看看 scriptaculous 效果库里的sound.js文件,基于Prototype,代码如下:
    JScript code
    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(){} }


    例子如下:
    HTML code
    <!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>

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:13:3013楼 得分:0
    晕,楼上这位大哥,prototype.js、scriptaculous.js这2个js我这可没有,所以当然也运行不了你上面贴的代码了
    你试过,是兼容的么? 方便的话能把代码贴全么? 或者把例子的页面等文件发到我邮箱也行,邮箱:victor617_lg@yahoo.com.cn
    谢了先
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 10:15:2914楼 得分:0
    不过我前天倒觉得我这个方法还是比较行得通的,至少在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>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 11:36:1915楼 得分:0
    当然全支持了,http://script.aculo.us 下载个包,里面有例子的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 13:23:2116楼 得分:0
    好,我先去看看 3q
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 13:33:1917楼 得分:0
    对说清楚点么,具体下哪个包,哥们
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 13:57:3718楼 得分:0
    http://script.aculo.us/dist/scriptaculous-js-1.8.1.zip
    这个,解压缩出来,里面有个test文件夹,你打开里面的html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 15:07:4319楼 得分:0
    我去看看,哥们有msn或者qq么?
    方便请教啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 13:36:5220楼 得分:0
    问题依然无解啊朋友们,最近尝试了一个方法,就是利用flash调用外部声音,然后通过js与flash通讯来控制声音,
    但是现在又遇到问题
    1、要通过服务器上访问页面,才能顺利播放
    2、貌似不支持wav文件格式的声音
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 22:38:2421楼 得分:0
    引用 20 楼 victor617 的回复:
    问题依然无解啊朋友们,最近尝试了一个方法,就是利用flash调用外部声音,然后通过js与flash通讯来控制声音,
    但是现在又遇到问题
    1、要通过服务器上访问页面,才能顺利播放
    2、貌似不支持wav文件格式的声音

    我服了你了,现成的代码给你用......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 22:38:5622楼 得分:0
    引用 20 楼 victor617 的回复:
    问题依然无解啊朋友们,最近尝试了一个方法,就是利用flash调用外部声音,然后通过js与flash通讯来控制声音,
    但是现在又遇到问题
    1、要通过服务器上访问页面,才能顺利播放
    2、貌似不支持wav文件格式的声音

    我服了你了,现成的代码给你用......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 22:39:4123楼 得分:0
    引用 20 楼 victor617 的回复:
    问题依然无解啊朋友们,最近尝试了一个方法,就是利用flash调用外部声音,然后通过js与flash通讯来控制声音,
    但是现在又遇到问题
    1、要通过服务器上访问页面,才能顺利播放
    2、貌似不支持wav文件格式的声音

    我服了你了,现成的代码给你用......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 22:41:3724楼 得分:0
    引用 20 楼 victor617 的回复:
    问题依然无解啊朋友们,最近尝试了一个方法,就是利用flash调用外部声音,然后通过js与flash通讯来控制声音,
    但是现在又遇到问题
    1、要通过服务器上访问页面,才能顺利播放
    2、貌似不支持wav文件格式的声音

    我服了你了,现成的代码给你用......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 22:54:5825楼 得分:0
    顶啊


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:56:1626楼 得分:0
    晕倒,CSDN的论坛Bug,回复没成功就再发一遍,居然出现了4篇回复
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved