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、完整下载

jquery-audio5js.zip

6、经测试:Chrome 44、QQ浏览器9、Firefox 35、IE 5/7/8/9/10/+可用,其它未测试。

注意:IE5/7/8的中自动切换为flash播放器播放,但由于浏览器与flash播放器的安全性问题,需要将文件放置到中间件(如Tomcat)中才能见效果。

分类: Html5JavaScriptjQuery

标签: HTML5jQueryJavaScriptAudio

时间: 2024-10-07 08:31:59

jQuery语音播放插件的相关文章

自己做jQuery插件:将audio5js封装成jQuery语音播放插件

日前的一个项目需要用到语音播放功能.发现Audio5js符合需求且使用简单,又鉴于jQuery控件便于开发操作,于是有了以下的封装. 首先先简单介绍一下Audio5js吧. Audio5js是一个能够帮助你解决类似这样的浏览器兼容性问题的js类库,轻量级并且能够很优雅的使用flash向前兼容老版本的浏览器. 其主要特性: 拥有完整API来控制“加载”,“播放”,“暂停”,“音量”和“查找” 并且可以得到播放内容的具体相关信息 不依赖任何类库 兼容版本浏览器,包括:IE8, IE9, Chrome

jQuery图片播放插件prettyPhoto使用介绍

演示效果  http://www.17sucai.com/preview/131993/2014-07-09/mac-Bootstrap/gallery.html 点击之后的效果 使用方法 Query图片播放插件prettyPhoto使用介绍   http://www.sohenk.com/archives/379 jQuery图片播放插件prettyPhoto使用介绍,布布扣,bubuko.com

jquery图片播放插件Fancybox使用详解

今天给大家介绍的jquery图片播放插件叫Fancybox,相比LightBox来说,Fancybox相对庞大点,配置也更丰富一些,相信你会喜欢的. Fancybox的项目主页地址:http://fancybox.net/ Fancybox的特点如下: 可以支持图片.html文本.flash动画.iframe以及ajax的支持 可以自定义播放器的CSS样式 可以以组的形式进行播放 如果将鼠标滚动插件(mouse wheel plugin)包含进来的话Fancybox还能支持鼠标滚轮滚动来翻阅图片

jquery图片播放插件Fancybox(灯箱)

效果预览Demo源码下载 Fancybox的特点如下: 可以支持图片.html文本.flash动画.iframe以及ajax的支持 可以自定义播放器的CSS样式 可以以组的形式进行播放 如果将鼠标滚动插件(mouse wheel plugin)包含进来的话Fancybox还能支持鼠标滚轮滚动来翻阅图片 Fancybox播放器支持投影,更有立体的感觉 Fancybox使用方法: 1.引入jquery核心库和Fancybox插件库 <script type="text/javascript&q

jQuery图片切换插件jquery.cycle.js

Cycle是一个很棒的jQuery图片切换插件,提供了很好的功能来帮助大家更简单的使用插件的幻灯功能 下载cycle插件并引入,此时,注意把引入它的代码放在引入jQuery主文件之后. <head> <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src

十个jQuery图片画廊插件推荐

jQuery的画廊插件可以将分组图像和多媒体资料转成类似Flash的图像或照片.当幻灯片已经成为网站的重要组成部分,jQuery的重要性不能被忽视.下面为你介绍了10个最有美感,创新性和创造性的jQuery图片画廊插件: 1.How to Create a Simple Slideshow using Mootools / JQuery 当我们想要在有限的屏幕空间展示很多内容,这要使用到幻灯片.幻灯片是最佳的可以展现大量的信息的方式.在这篇文章中我将展示使用MooTools / Jquery做出

20 个非常棒的jQuery内容滑动插件

WOW Slider是一款小巧易用的网页滑块设计.该软件内置大量的模版和工具,让你轻松设计出完美的视觉效果.他还可以帮助用户在短时间内创造出梦幻般的滑块,而无需编码和图像编辑,是很不错的图像滑块设计工具. Nivo Slider Nivo Slider是一款出色的jQuery幻灯片插件,支持多种切换效果,可定制性强. Simple Multi-Item Slider一款基于jQuery插件的多项目滚动条,Simple Multi-Item Slider Category slider with

10款很好用的 jQuery 图片滚动插件

jQuery 作为最流行的 JavaScript 框架,使用简单灵活,同时还有许多优秀的插件可供使用.其中最令人印象深刻的应用之一就是各种很酷的图片效果,它可以让的网站更具吸引力.这里收集了10款很好用的 jQuery 图片滚动插件分享给大家. 1.Nivo Slider 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次! 在线演示 源码下载 2.Slides Slides 是一款精巧的

分享10款常用的jQuery焦点图插件

爱编程一直在收集整理编程相关的知识和解决方案,今天小编为大家带来10款非常常用的jquery焦点图插件. 1.jQuery可自动播放动画的焦点图插件 之前我们已经分享过很多非常实用的jQuery焦点图插件,大部分对开发者来说基本上可以直接拿来使用.今天我们要分享一款可以自动播放动画的jQuery焦点图插件,它在切换图片的时候可以播放对应图片的各种动画效果. 在线预览   源码下载 2.jQuery可自动播放动画的焦点图插件 这次我们要分享的这款jQuery焦点图非常特别,它的外观特别简单,但是又