为你的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 相关文章推荐
详解CSS3 Media Queries中媒体属性的使用
Feb 29 HTML / CSS
CSS3实现王者匹配时的粒子动画效果
Apr 12 HTML / CSS
CSS3 分类菜单效果
May 27 HTML / CSS
浅谈HTML5 defer和async的区别
Jun 07 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
Mar 24 HTML / CSS
html5是什么_动力节点Java学院整理
Jul 07 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
html5清空画布方法(三种)
Oct 16 HTML / CSS
canvas 如何绘制线段的实现方法
Jul 12 HTML / CSS
html5移动端价格输入键盘的实现
Sep 16 HTML / CSS
HTML中table表格拆分合并(colspan、rowspan)
Apr 07 HTML / CSS
Css预编语言及区别详解
Apr 25 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
yii分页组件用法实例分析
2015/12/28 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
Javascript Global对象
2009/08/13 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
浅析Python多线程下的变量问题
2015/04/28 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Python实现随机选择元素功能
2017/09/14 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
C++是不是类型安全的
2014/02/18 面试题
市级三好学生事迹材料
2014/08/27 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android