为你的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的transition属性实现滑动效果
Aug 05 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
Apr 02 HTML / CSS
简单的HTML5初步入门教程
Sep 29 HTML / CSS
html5实现移动端适配完美写法
Nov 16 HTML / CSS
Html5实现首页动态视频背景的示例代码
Sep 25 HTML / CSS
关于html字符串正则判断和匹配的具体使用
Dec 12 HTML / CSS
HTML5 图片预加载的示例代码
Mar 25 HTML / CSS
AmazeUI 点击元素显示全屏的实现
Aug 25 HTML / CSS
AmazeUI 等分网格的实现示例
Aug 25 HTML / CSS
css3实现背景图片颜色修改的多种方式
Apr 13 HTML / CSS
纯CSS实现酷炫的霓虹灯效果
Apr 13 HTML / CSS
Html5同时支持多端sdk的小技巧
Nov 17 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
PHP 的 __FILE__ 常量
2007/01/15 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
django站点管理详解
2017/12/12 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
Python中的asyncio代码详解
2019/06/10 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python线程中的同步问题及解决方法
2019/08/29 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Why do we need Unit test
2013/01/03 面试题
国际商务专业学生个人的自我评价
2013/09/28 职场文书
护士岗位职责
2014/02/16 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
openstack云计算keystone组件工作介绍
2022/04/20 Servers
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android