如何动态改变audio的播放的src

一、总结

一句话总结:js方式在请求外部网站的时候行,php方式在请求内外部资源都行。因为php走在js前面,所以问题可以从php方面想办法。

1、如何使用js控制修改audio的src或它的source 的src属性实现动态改变audio放的音频?

a、只有修改audio 的src值,才可以播放
修改source 的 src值却不可以播放

b、在更改src后要加上load();函数(这是js下的函数,不是jquery的那个load())

17 <script>
18     function addDynamicNameAttr_audio(nameAttrValue) { 19  console.log(nameAttrValue); 20  $(function () { 21  $('#fry_audio').attr('src',nameAttrValue); 22 var fry_audio=$('#fry_audio').get('0'); 23  fry_audio.load(); 24  }); 25 26  } 27 </script>

这种方法在请求外部网站的时候行

2、php方式实现动态改变audio的播放的src?

就是请求参数的不同动态的决定把哪个路径的地址赋值给audio的src

 1 <?php
 2     if(!isset($fry_audio_type)) $fry_audio_type=null;  3 $fry_audio_src="__STUDENT__/AudioPlayer/AudioPlayer/audio/BlueDucks_FourFlossFiveSix.mp3";  4 if($fry_audio_type=="article.a_content_aud1"){  5 $fry_audio_src=$article['a_content_aud1'];  6  }  7 ?>
18     <audio preload="auto" id="fry_audio" controls>
19         <source src="{$fry_audio_src}">
20     </audio>

请求的时候就是好好设置这个$fry_audio_type值就行了

二、如何动态改变audio的播放的src

1、js方式

这是在thinkphp5.0中,我把audio封装成整体,便于在系统中多次调用

audio插件整体:
 1 <link rel="stylesheet" href="__STUDENT__/AudioPlayer/AudioPlayer/css/audioplayer.css" />
 2 <script src="__STUDENT__/AudioPlayer/AudioPlayer/js/audioplayer.js"></script>
 3 <script>
 4     /*
 5         VIEWPORT BUG FIX
 6         iOS viewport scaling bug fix, by @mathias, @cheeaun and @jdalton
 7     */
 8     (function(doc){var addEvent='addEventListener',type='gesturestart',qsa='querySelectorAll',scales=[1,1],meta=qsa in doc?doc[qsa]('meta[name=viewport]'):[];function fix(){meta.content='width=device-width,minimum-scale='+scales[0]+',maximum-scale='+scales[1];doc.removeEventListener(type,fix,true);}if((meta=meta[meta.length-1])&&addEvent in doc){fix();scales=[.25,1.6];doc[addEvent](type,fix,true);}}(document));
 9 </script>
10 <div id="wrapper">
11     <audio preload="auto" id="fry_audio" controls>
12         <source src="__STUDENT__/AudioPlayer/AudioPlayer/audio/BlueDucks_FourFlossFiveSix.mp3">
13     </audio>
14     <script>$( function() { $( 'audio' ).audioPlayer(); } );</script>
15 </div>
16
17 <script>
18     function addDynamicNameAttr_audio(nameAttrValue) {
19         console.log(nameAttrValue);
20         $(function () {
21             $('#fry_audio').attr('src',nameAttrValue);
22             var fry_audio=$('#fry_audio').get('0');
23             fry_audio.load();
24         });
25
26     }
27 </script>

这里 要执行load()函数,不然没效果

外部调用:
 1 <div width="100%" >
 2     <!-- 引入音频播放app -->
 3     {include file="app/audio" /}
 4     <!--End 引入音频播放app -->
 5     <script>
 6         console.log('11111111111');
 7         // addDynamicNameAttr_audio("{$article.a_content_aud1}");
 8         addDynamicNameAttr_audio("http://yun.it7090.com/video/XHLaunchAd/video01.mp4");
 9     </script>
10 </div>

现在执行第8行,调用外部资源,这样是成功的

但是当我调用系统内部资源的时候,就是执行上面第7句时,就会遇到

也就是我的系统不允许这样直接请求资源

这是因为这样做的话资源不是php发给我们的,而变成了js请求的资源一样,自然不行。(说的有点牵强,大概就是这个意思)

2、php方式(最开始就动态指定audio的src)

上面的js操作不能解决问题,所以我们就从php出发,因为php运行在js的前面,如果php那个时候解决了audio的src,那么就不用js再来请求资源了,也就不会遇到上面的问题

audio插件整体:
 1 <?php
 2     if(!isset($fry_audio_type)) $fry_audio_type=null;
 3     $fry_audio_src="__STUDENT__/AudioPlayer/AudioPlayer/audio/BlueDucks_FourFlossFiveSix.mp3";
 4     if($fry_audio_type=="article.a_content_aud1"){
 5         $fry_audio_src=$article['a_content_aud1'];
 6     }
 7 ?>
 8 <link rel="stylesheet" href="__STUDENT__/AudioPlayer/AudioPlayer/css/audioplayer.css" />
 9 <script src="__STUDENT__/AudioPlayer/AudioPlayer/js/audioplayer.js"></script>
10 <script>
11     /*
12         VIEWPORT BUG FIX
13         iOS viewport scaling bug fix, by @mathias, @cheeaun and @jdalton
14     */
15     (function(doc){var addEvent='addEventListener',type='gesturestart',qsa='querySelectorAll',scales=[1,1],meta=qsa in doc?doc[qsa]('meta[name=viewport]'):[];function fix(){meta.content='width=device-width,minimum-scale='+scales[0]+',maximum-scale='+scales[1];doc.removeEventListener(type,fix,true);}if((meta=meta[meta.length-1])&&addEvent in doc){fix();scales=[.25,1.6];doc[addEvent](type,fix,true);}}(document));
16 </script>
17 <div id="wrapper">
18     <audio preload="auto" id="fry_audio" controls>
19         <source src="{$fry_audio_src}">
20     </audio>
21     <script>$( function() { $( 'audio' ).audioPlayer(); } );</script>
22 </div>

外部调用:
 1 <!--3、音频部分-->
 2 {if condition="strlen($article['a_content_aud1'])>0"}
 3 <div width="100%" >
 4     <?php $fry_audio_type="article.a_content_aud1";?>
 5     <!-- 引入音频播放app -->
 6     {include file="app/audio" /}
 7     <!--End 引入音频播放app -->
 8 </div>
 9 {/if}
10 <div width="100%" >
11     <?php $fry_audio_type=null;?>
12     <!-- 引入音频播放app -->
13     {include file="app/audio" /}
14     <!--End 引入音频播放app -->
15 </div>

上面的代码是两次掉用,这样可以通过不同的调用赋给audio不同的src

转载于:https://www.cnblogs.com/Renyi-Fan/p/9555996.html

如何动态改变audio的播放的src相关推荐

  1. 解决javascript动态改变img的src属性图片不显示问题

    解决javascript动态改变img的src属性图片不显示问题 参考文章: (1)解决javascript动态改变img的src属性图片不显示问题 (2)https://www.cnblogs.co ...

  2. 模仿企鹅FM播放主页面滑动动态改变各视图的大小

    国庆的一个任务就是把自己之前写的代码搬到博客.这次给各位带来的是通过滑动来动态改变各个View的大小进而达到企鹅FM播放页面的滑动效果(仅仅是滑动效果),老规矩看图先: 首先看看主界面的xml布局: ...

  3. 用javascript 动态改变iframe 的src 属性

    原文地址为: 用javascript 动态改变iframe 的src 属性 <iframe id="xx"></iframe> <iframe id= ...

  4. html5 audio音频播放全解析

    html5开启了一个新时代,因为它让浏览器本身变得不那么被动,audio api就是一个典型的列子,在html5还没确定之前,如果想要在网页上听音乐看视频唯一的办法就是用flash 意思是当你没有给浏 ...

  5. audio自动播放遇到的问题

    audio自动播放遇到的问题 ios限制了自动播放视频.自动播放音频,必须有用户行为才可以播放 像背景音乐可以这样添加事件监听,在页面初始化后就可以自动播放 <script src=" ...

  6. html5 audio音频播放器

    html5开启了一个新时代,因为它让浏览器本身变得不那么被动,audio api就是一个典型的列子,在html5还没确定之前,如果想要在网页上听音乐看视频唯一的办法就是用flash 意思是当你没有给浏 ...

  7. canvas绘制坐标点连线/动态改变宽度导致canvas渲染失败

    文章目录 一.有关canvas 二.绘制图案 三.放大缩小功能 四.canvas清空画布的三种方式 五.动态改变宽度导致canvas渲染失败 现在需要根据坐标点绘制对应的连线,于是考虑采用canvas ...

  8. 解决iOS h5 audio自动播放(亲测有效)

    微信H5页面,实现audio自动播放: function initMusic() {//动态创建一个audio节点var audio = document.createElement('audio') ...

  9. audioContext audio 音频播放

    目的:通过对 audio 和 audioContext 的使用,加深对音频的处理 使用 标签播放音频 使用 AudioContext 对象播放音频 <进阶>通过 AudioContext ...

最新文章

  1. cobbler 无人值守-安装
  2. 厦门口岸检出今年首例登革热病例
  3. (How to) Call somatic mutations using GATK4 Mutect2
  4. 写CSDN插入图片一直无法显示?
  5. 乌班图好玩的命令_乌班图必须知道的60个命令
  6. c#中设计器中窗体释放  protected override void Dispose(bool disposing)改写解决部分窗体线程释放不彻底问题
  7. 这批.Net程序员水平不行啊!居然ASP.NET Core Middleware都不会用
  8. sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL
  9. MongoDB监控及报警
  10. SpringCloud Feign实战(二)
  11. 蒙特.卡罗方法求解圆周率近似值原理与Python实现
  12. MySQL,优化查询的方法
  13. python3、ipython3、setup-tools、pip等环境搭建详细总结
  14. MongoDB Replica Set 选举过程
  15. 毕设题目:Matlab手写或印刷数字字母识别
  16. Java并发之Condition接口
  17. OpenCV环境搭建(Windows+Visual studio)及Hello World
  18. 服务器bios界面usb无线网卡,BIOS怎么开启无线网卡
  19. oracle授权v$lock,访问V$LOCK视图Oracle 11g出现性能问题
  20. 计算机专业有哪些【含金量超高竞赛】?

热门文章

  1. javascript:void(0) 含义
  2. 用户体验设计的五个原则(转)
  3. MySQL的mysql_insert_id和LAST_INSERT_ID
  4. 深度学习笔记之win7下TensorFlow的安装
  5. Linux查看系统各类信息
  6. modbus注意几点
  7. 【转载】C# 理解泛型
  8. 企业网站6个常见的优化漏洞
  9. 阿里巴巴旗下平台口碑推出无人收银技术,改造便利店市场;重庆法院运用 AI 探索“智能判案”...
  10. Android WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法