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

如何动态改变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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

错误 open too many files

错误:服务器最大打开文件数65535启动java程序报错 open too many files解决办法&#xff1a;1.增加文件描述符 #服务器本来就是65535了2.排查程序 #研发总监4.研发总监和我 一起看服务器lsof -p pid&#xff08;程序&#xff09;|wc -l5.最终确定程序的问题6.研发总监 去改…

mysql 水平拆分实例_2021先定个小目标?搞清楚MyCat分片的两种拆分方法和分片规则!(二):水平拆分实例解析和代码实现!...

一、概述根据表中的数据的逻辑关系&#xff0c;将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面&#xff0c;这种切分称之为数据的水平(横向)切分。二、案例场景在业务系统中, 有一张表(日志表), 业务系统每天都会产生大量的日志数据 , 单台服务器的数据存储及处理能…

30分钟快速搭建移动应用直传OSS服务

30分钟快速搭建移动应用直传服务 背景 这是一个移动互联的时代。手机APP上传的数据会越来越多。把数据存储的问题交给OSS&#xff0c; 让开发者能更加专注于自己的应用逻辑。 那么怎么样基于OSS构建一个APP存储系统呢&#xff1f; 目的 本教程就是让你在30分钟内搭建一个基于OS…

用java判断一个年份是否为闰年_判断闰年还是平年

↑↑↑点击上方图片&#xff0c;了解详情正文&#xff1a;判断一个年份是闰年还是平年。闰年条件&#xff1a;1.可以被400整除。2.可以被4整除&#xff0c;但是不可以被100整除。代码&#xff1a;Private Sub 查询_Click() If Me.年份 Mod 4 0 And Me.年份 Mod 100 <> 0…

PAT L1-048 矩阵A乘以B

https://pintia.cn/problem-sets/994805046380707840/problems/994805082313310208 给定两个矩阵A和B&#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是&#xff0c;只有规模匹配的矩阵才可以相乘。即若A有R​a​​行、C​a​​列&#xff0c;B有R​b​​行、C​b​​列&a…

【JavaScript吉光片羽】--- 滑动条

灯光的亮度控制需要一个滑动条&#xff0c;先借用lamp源码中Bar&#xff1a; var Bar function (opt) {var defaults {$id: "", // 进度条dom节点idmin: 1, // 刻度最小值stepCount: 5, // 刻度步数step: 1, // 刻度步长$alpha: "",//显示亮度的idtouchE…

ldd /usr/bin/mysql_mysql客户端登录时报mysql: relocation error错误

在安装了xtrabackup后&#xff0c;再用下列命令登录时报下列错误[rootlocalhost ~]# mysql -u root -pmysql: relocation error: mysql: symbol strmov, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference解决方法&#xff1a;查看…

python语言用什么关键字来声明一个类_python使用什么关键字定义类

什么是类&#xff1f; 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 什么是方法&#xff1f; 类中的函数即为方法 如何定义一个类&#xff1f; 定义类&#xff0c;语法格式如下&#xff1a;class ClassName:. . .…

谷歌+安卓,他已经改变了世界两次,但还想多来几次

回望拉里佩奇的创业经历&#xff0c;小巴发现他在几个创业者最有可能犯&#xff08;si&#xff09;错&#xff08;bi&#xff09;的节点上都处理得很好。 你还记得你用的第一个搜索网站是什么吗&#xff1f; Google.com 讲到它的创始人&#xff0c;一般要连起来念&#xff0c; …

centos7 DNS服务器搭建

DNS&#xff0c;全称Domain Name System&#xff0c;即域名解析系统。 DNS帮助用户在互联网上寻找路径。在互联网上的每一个计算机都拥有一个唯一的地址&#xff0c;称作“IP地址”&#xff08;即互联网协议地址&#xff09;。由于IP地址&#xff08;为一串数字&#xff09;不方…

lisp中怎样调取图形_CAD的lisp程序已加载,怎样绘图?

回答&#xff1a;1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度)(defun c:LL ()(setvar "cmdecho" 1)(setq en (ssget(list (0 . "spline,arc,line,ellipse,LWPOLYLINE"))))(setq i 0)(setq ll 0)(repeat (sslength en)(setq ss (…

Java Web的web.xml文件作用及基本配置(转)

其实web.xml就是asp.net的web.config一个道理。 说明&#xff1a; 一个web中完全可以没有web.xml文件&#xff0c;也就是说&#xff0c;web.xml文件并不是web工程必须的。 web.xml文件是用来配置&#xff1a;欢迎页、servlet、filter等的。当你的web工程没用到这些时&#xff0…

stand up meeting 12/21/2015

part组员 工作 工作耗时/h明日计划工作耗时/h UI冯晓云 完成PDF UI主页面的页面切换功能&#xff0c;待完善 4 完善页面切换&#xff0c;修补弹窗bug 4foxit PDF Reader朱玉影 修改了对pdf中文本进行搜索的代码&#xff0c;使其更加robust 4 pdf…

python快速检测视频跳过帧_使用Python实现跳帧截取视频帧

本文实例为大家分享了Python跳帧截取视频帧的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 可以自由设定时长来截取视频&#xff0c;经实测效果理想。期间遇到的一个麻烦是我的视频文件在D:盘&#xff0c;在原视频D盘目录上不能保存截取的图片文件&#xff0c;后改…

BZOJ3999: [TJOI2015]旅游

BZOJ3999: [TJOI2015]旅游 Description 为了提高智商&#xff0c;ZJY准备去往一个新世界去旅游。这个世界的城市布局像一棵树。每两座城市之间只有一条路径可以互达。每座城市都有一种宝石&#xff0c;有一定的价格。ZJY为了赚取最高利益&#xff0c;她会选择从A城市买入再转手…

一张图看懂单机/集群/热备/磁盘阵列(RAID)

单机部署(Standalone) 只有一个饮水机提供服务器&#xff0c;服务只部署一份 集群部署(Cluster) 多个饮水机同时提供服务&#xff0c;服务冗余部署&#xff0c;每个冗余的服务都对外提供服务&#xff0c;一个服务挂掉时依然可用 热备部署(Hot-swap) 只有一个桶提供服务&#xf…

typescript vuex_Vue3+TypeScript完整项目上手教程

作者&#xff1a;TinssonTaihttps://juejin.im/post/6875713523968802829一个完整的Vue3Ts项目,支持.vue和.tsx写法 项目地址&#xff1a;https://github.com/vincentzyc/vue3-demo.gitTypeScript 是JS的一个超集&#xff0c;主要提供了类型系统和对ES6的支持&#xff0c;使用 …

JS中window.showModalDialog()详解

window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 使用方法&#xff1a; vReturnValue window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue window.show…

一个简单的javascript节流器实现

节流器 javascript的节流器主要用于延缓某些动作的执行&#xff0c;比如ajax请求&#xff0c;如果input框注册了input事件&#xff0c;那么当用户输入时就会持续的触发这个事件&#xff0c;如果回调函数中持续的通过ajax调用后台的接口&#xff0c;就会对服务器产生一定压力。这…

一些会用到的知识

为什么80%的码农都做不了架构师&#xff1f;>>> HtmlAgilityPack 用来解析HTML代码 microsoft.mshtml CsQuery 解析HTML代码 转载于:https://my.oschina.net/uwith/blog/813725