为你的html5网页添加音效示例


Posted in HTML / CSS onApril 03, 2014

为交互添加恰当的音效,常常能改善用户体验。在我们所熟悉的windows里,清空回收站的碎纸声就是很好的例子。
下面是一个利用HTML5, Jquery,给页面添加音效的小组件(只是添加音效,并不是播放器)。
其实很简单,就是利用HTML5中的audio标签,播放声音。不过为了照顾IE 6-8,还是用上了bgsound。
兼容所有主流浏览器(非主流不在考虑之列了)
闲话少说,上代码:

复制代码
代码如下:

<a href="#" class="fui-btn">播放</a>
<script>
/*Play sound component*/
/*
* profile: JSON, {src:'chimes.wav',altSrc:'',loop:false}
*
* setSrc: Function, set the source of sound
* play: Function, play sound
*/
if (!FUI){
var FUI = {};
}
FUI.soundComponent=function(profile){
this.profile={
src:'',

  //音频文件地址
altSrc:'',

//备选音频文件地址 (不同浏览器支持的音频格式不同,可见附表)
loop:false

  //是否循环播放,这个参数现在没有用上
};
if(profile) {
$.extend(this.profile,profile);
}
this.soundObj=null;
this.isIE = !-[1,];
/*这个方法是前辈大牛发明的,利用ie跟非ie中JScript处理数组最后一个逗号“,”的差异,
不过对于IE 9,这个办法就无效了,但此处正合我用,因为IE 9支持audio*/
this.init();
};
FUI.soundComponent.prototype={
init:function(){
this._setSrc();
},
_setSrc:function(){
if(this.soundObj){
if(this.isIE){
this.soundObj[0].src=this.profile.src;
}else{
this.soundObj[0].innerHTML='<source src="'+this.profile.src+'" />
<source src="'+this.profile.altSrc+'" />';
}
}else{
if(this.isIE){
this.soundObj=$
('<bgsound volume="-10000" loop="1" src="'+this.profile.src+'">').appendTo('body');
//-10000是音量的最小值。先把音量关到最小,免得一加载就叮的一声,吓到人。
}else{
this.soundObj=$('<audio preload="auto" autobuffer>
<source src="'+this.profile.src+'" />
<source src="'+this.profile.altSrc+'" />
</audio>').appendTo('body');
}
}
},
setSrc:function(src,altSrc){
this.profile.src=src;
if(typeof altSrc!='undefined'){
this.profile.altSrc=altSrc;
}
this._setSrc();
},
play:function(){
if(this.soundObj){
if(this.isIE){
this.soundObj[0].volume = 1;

//把音量打开。
this.soundObj[0].src = this.profile.src;
}else{
this.soundObj[0].play();
}
}
}
};
var sd=new FUI.soundComponent({src:'ding.wav',altSrc:'ding.mp3'});
$('.fui-btn').bind('click',function(e){
sd.play();
});
</script>

HTML / CSS 相关文章推荐
Web前端绘制0.5像素的几种方法
Aug 11 HTML / CSS
CSS3用@font-face实现自定义英文字体
Sep 23 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
Feb 07 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 HTML / CSS
Html5实现iPhone开机界面示例代码
Jun 30 HTML / CSS
HTML 5 input placeholder 属性如何完美兼任ie
May 12 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
Jan 29 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
详解HTML5.2版本带来的修改
May 06 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
Oct 28 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
Apr 02 #HTML / CSS
简单html5代码获取地理位置
Mar 31 #HTML / CSS
HTML5注册页面示例代码
Mar 27 #HTML / CSS
html5实现微信打飞机游戏
Mar 27 #HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
Mar 26 #HTML / CSS
html5适合移动应用开发的12大特性
Mar 19 #HTML / CSS
用html5实现语音搜索框的方法
Mar 18 #HTML / CSS
You might like
牡丹941资料
2021/03/01 无线电
php字符串截取问题
2006/11/28 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
在Python的Django框架中创建和使用模版
2015/07/15 Python
利用python画一颗心的方法示例
2017/01/31 Python
python随机取list中的元素方法
2018/04/08 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
运动会邀请函范文
2014/02/06 职场文书
美术指导求职信
2014/03/17 职场文书
篮球赛口号
2014/06/18 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
电影复兴之路观后感
2015/06/02 职场文书
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle