jQuery语音播放插件
自己做jQuery插件:将audio5js封装成jQuery语音播放插件
日前的一个项目需要用到语音播放功能。发现Audio5js符合需求且使用简单,又鉴于jQuery控件便于开发操作,于是有了以下的封装。
首先先简单介绍一下Audio5js吧。
Audio5js是一个能够帮助你解决类似这样的浏览器兼容性问题的js类库,轻量级并且能够很优雅的使用flash向前兼容老版本的浏览器。
其主要特性:
- 拥有完整API来控制“加载”,“播放”,“暂停”,“音量”和“查找”
- 并且可以得到播放内容的具体相关信息
- 不依赖任何类库
- 兼容版本浏览器,包括:IE8, IE9, Chrome 23 (Mac), Firefox 17 (Mac), Safari 6, Opera 12 (Mac), Safari Mobile (iOS 6.0), Webkit Mobile (Android 4.0.4)
Audio5js 官方地址:http://zohararad.github.io/audio5js/
下面开始介绍封装方式
1、自定义jQuery插件方法:jquery.audio5js.js

1 /*!
2 * Jquery Audio5js: 基于Audio5js的Jquery简单封装
3 * http://www.cnblogs.com/yvanwu/
4 * yvan.wu 2015
5 */
6 /**
7 使用方式:
8 如:
9 $("#voice1").audio5js({
10 url : "voice/demo.mp3"
11 });
12 */
13 !function ($) {
14 var Audio = function (element, options) {
15 this.$element = $(element);
16 this.options = $.extend({}, $.fn.audio5js.defaults, options);
17 this.init();
18 };
19 Audio.prototype = {
20 constructor : Audio,
21 // 初始化导航
22 init : function(){
23 var settins = this.options;
24 var ele = this.$element;
25 var audio = this;
26 // 初始化样式
27 ele.addClass(settins['class']);
28 ele.attr("title", settins.title);
29 // 初始化audio5js
30 settins.audio5js = new Audio5js({
31 swf_path: 'https://cdnjscn.b0.upaiyun.com/libs/audio5js/0.1.9/audio5js.swf',
32 ready: function(){
33 this.load(settins.url);
34 ele.click(function(){
35 audio.playPause();
36 });
37 this.on('play', function () {
38 ele.removeClass(settins['class']);
39 ele.addClass(settins.playingClass);
40 }, this);
41 this.on('pause', function () {
42 ele.removeClass(settins.playingClass);
43 ele.addClass(settins['class']);
44 }, this);
45 this.on('ended', function () {
46 ele.removeClass(settins.playingClass);
47 ele.addClass(settins['class']);
48 }, this);
49 //error event passes error object to callback
50 this.on('error', function (error) {
51 //alert("播放出错!");
52 }, this);
53 }
54 });
55 },
56 playPause : function () {
57 var audio5js = this.options.audio5js;
58 if (audio5js.playing) {
59 audio5js.pause();
60 audio5js.volume(0);
61 } else {
62 audio5js.seek(0); //回到最开始的位置
63 audio5js.play();
64 audio5js.volume(1);
65 }
66 },
67 pause : function(){
68 var audio5js = this.options.audio5js;
69 if (audio5js.playing) {
70 audio5js.pause();
71 audio5js.volume(0);
72 }
73 },
74 play : function(){
75 var audio5js = this.options.audio5js;
76 if (!audio5js.playing) {
77 audio5js.play();
78 audio5js.volume(1);
79 }
80 },
81 getAudio5js : function(){
82 return this.options.audio5js;
83 }
84
85 };
86 $.fn.audio5js = function (option, value) {
87 var methodReturn;
88
89 var $set = this.each(function () {
90 var $this = $(this);
91 var data = $this.data('audio');
92 var options = typeof option === 'object' && option;
93 if (!data) {
94 $this.data('audio', (data = new Audio(this, options)));
95 }
96 if (typeof option === 'string') {
97 methodReturn = data[option](value);
98 }
99 });
100 return (methodReturn === undefined) ? $set : methodReturn;
101 };
102
103 $.fn.audio5js.defaults = {
104 url : "", //音频文件地址
105 title : "点击播放",
106 'class' : "audio", // 正常样式class
107 playingClass : "audio-playing", // 播放时样式class
108 audio5js : {}
109 };
110
111 $.fn.audio5js.Constructor = Audio;
112 }(window.jQuery);

2、语音插件样式:jquery.audio5js.css

1 /*播放样式*/
2 .audio {
3 cursor: pointer;
4 background: url("../images/voice.png") 0 -512px no-repeat;
5 width: 60px;
6 height: 60px;
7 vertical-align: middle;
8 display: inline-block;
9 }
10 .audio-playing {
11 cursor: pointer;
12 background: url("../images/voice.gif") 0 0 no-repeat;
13 width: 60px;
14 height: 60px;
15 vertical-align: middle;
16 display: inline-block;
17 }

3、案例页面:demo.html

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Jquery Audio5js Demo</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6 <link rel="stylesheet" href="css/jquery.audio5js.css" />
7 <script type="text/javascript" src="https://cdnjscn.b0.upaiyun.com/libs/jquery/1.8.3/jquery.min.js"></script>
8 <script type="text/javascript" src="https://cdnjscn.b0.upaiyun.com/libs/audio5js/0.1.9/audio5.min.js"></script>
9 <script type="text/javascript" src="js/jquery.audio5js.js"></script>
10 </head>
11
12 <body>
13 标准案例:点击图片可以播放/暂停<br />
14 <span id="voice1" ></span>
15
16 <br />
17 <br />
18 <br />
19 JS控制:<br />
20 <input type="button" value="播放/停止" onclick="$('#voice1').audio5js('playPause')" />
21 <input type="button" value="播放" onclick="$('#voice1').audio5js('play')" />
22 <input type="button" value="暂停" onclick="$('#voice1').audio5js('pause')" />
23 <script type="text/javascript">
24 $(function(){
25 $("#voice1").audio5js({
26 url : "voice/demo.mp3"
27 });
28 });
29 </script>
30 </body>
31 </html>

4、样式的图片资源与案例的音频文件在第5点中,请另行下载。
5、完整下载
6、经测试:Chrome 44、QQ浏览器9、Firefox 35、IE 5/7/8/9/10/+可用,其它未测试。
注意:IE5/7/8的中自动切换为flash播放器播放,但由于浏览器与flash播放器的安全性问题,需要将文件放置到中间件(如Tomcat)中才能见效果。
jQuery语音播放插件的更多相关文章
- 自己做jQuery插件:将audio5js封装成jQuery语音播放插件
日前的一个项目需要用到语音播放功能.发现Audio5js符合需求且使用简单,又鉴于jQuery控件便于开发操作,于是有了以下的封装. 首先先简单介绍一下Audio5js吧. Audio5js是一个能够 ...
- 分享8款精美的jQuery图片播放插件
本文将和大家一起分享8款精美的jQuery图片播放插件,每一款插件均有演示和源码下载,有兴趣的朋友可以下载使用和研究.废话不多说了,直接上这些插件. 1.3D轮播相册 这款3D相册插件利用了HTML5 ...
- 一款超炫的jquery图片播放插件[Cloud Carousel]
今天给大家介绍一个jquery图片播放插件,也可以说是一款幻灯片放映插件,它叫Cloud Carousel,支持自动播放.图片预览.鼠标滚轮滚动,非常酷,下图是效果预览. 该jquery图片播放项目演 ...
- jquery图片播放插件Fancybox使用详解
今天给大家介绍的jquery图片播放插件叫Fancybox,相比LightBox来说,Fancybox相对庞大点,配置也更丰富一些,相信你会喜欢的. Fancybox的项目主页地址:http://fa ...
- jQuery图片播放插件prettyPhoto使用介绍
演示效果 http://www.17sucai.com/preview/131993/2014-07-09/mac-Bootstrap/gallery.html 点击之后的效果 使用方法 Query ...
- Jquery音频播放插件下载地址(有Html、JS、CSS、音频)
有详细的html文件.全部JS代码文件.Css样式文件.测试音频资料 音频播放插件下载链接(百度云): http://pan.baidu.com/s/1pKC904F 提取码评论留邮箱发送,谢谢!
- jquery图片播放插件Fancybox(灯箱)
效果预览Demo源码下载 Fancybox的特点如下: 可以支持图片.html文本.flash动画.iframe以及ajax的支持 可以自定义播放器的CSS样式 可以以组的形式进行播放 如果将鼠标滚动 ...
- 强大的jQuery幻灯片播放插件 支持全拼、拖拽和下载等功能
在线演示 本地下载
- 美女jquery图片播放器插件
相册在线查看http://keleyi.com/keleyi/phtml/image/6.htm 可全屏,可拖动,可自动播放的jquery图片展示插件 使用说明:1.引用css文件:<link ...
随机推荐
- Atitit.软件的仪表板(8)--os子系统--监控资源使用情况
Atitit.软件的仪表板(8)--os系统--资源占用监測 CPU使用 内存使用 磁盘队列 任务管理器 网络速度 插件列表( 资源管理器插件,浏览器插件,360optim) 启动项管理 (350) ...
- putty中的一些经常使用操作
(和Linux中操作差点儿相同s) 删除文件夹 rm -rf /home/apache-tomcat-8.0.9 就会把home下的apache-tomcat-8.0.9目录给删除了 删除文件 rm ...
- SQL Server数据库视图
1:什么是视图 2:视图和查询的区别 3:视图的优点 4:如何创建和管理视图 5:如何通过视图修改基本表的数据 6:如何通过视图实现数据的安全性 A:什么是视图: 视图(view):从一个或几个基本表 ...
- C语言中的函数指针
C语言中的函数指针 函数指针的概念: 函数指针是一个指向位于代码段的函数代码的指针. 函数指针的使用: #include<stdio.h> typedef struct (*fun_t ...
- 主机Window不能访问该虚拟机Linux Samba文件服务提供了一个文件夹
我最近遇到一个问题.虚拟机Linux中间Samba服务常开.主办"\\192.168.229.200" (我的虚拟机Linux址)訪问不了Share文件夹(/var/test),并 ...
- WinCE CAB Manager 3.0学习
VS自带智能设备打包工具,能实现打包.但是,打包安装部署之后,设备上面没有卸载,找了好多资料,最终都没有解决. WinCE CAB Manager3.0完美解决. 打包步骤如下, 一,打开WinCE ...
- NET开发者部署React-Native
NET开发者部署React-Native 前情摘要 众所周知,有人说.net可以用Xamrian,呵呵,不习惯收费的好么?搞.Net的人设置一次java的环境变量,可能都觉得实在太麻烦了,可能是因为这 ...
- Namespace:Openstack的网络实现
前言:众所周知在linux系统中PID.IPC.Network等都是全局性的资源,不论什么的改动和删减都会对整个系统造成影响.这也是为什么kvm之类的虚拟化技术须要模拟一个完毕主机系统的原因. 可是. ...
- 事件冒泡 ,停止事件冒泡 e.stopPropagation()
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>防止起泡 ...
- Mongodb 之insert瞬时完成,测试数据---飞天博客
这几天看mongdb官方网站,然后将执行数据.突然,我发现,该数据确实很强大,在这里说话数据.我用普通的pc机,amd双核 2.7GHz,4G内存,当然,当系统不只是在测试作为数据库server的.同 ...