如何动态改变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插件整体:
<link rel="stylesheet" href="__STUDENT__/AudioPlayer/AudioPlayer/css/audioplayer.css" />
<script src="__STUDENT__/AudioPlayer/AudioPlayer/js/audioplayer.js"></script>
<script>
/*
VIEWPORT BUG FIX
iOS viewport scaling bug fix, by @mathias, @cheeaun and @jdalton
*/
(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));
</script>
<div id="wrapper">
<audio preload="auto" id="fry_audio" controls>
<source src="__STUDENT__/AudioPlayer/AudioPlayer/audio/BlueDucks_FourFlossFiveSix.mp3">
</audio>
<script>$( function() { $( 'audio' ).audioPlayer(); } );</script>
</div> <script>
function addDynamicNameAttr_audio(nameAttrValue) {
console.log(nameAttrValue);
$(function () {
$('#fry_audio').attr('src',nameAttrValue);
var fry_audio=$('#fry_audio').get('0');
fry_audio.load();
}); }
</script>
这里 要执行load()函数,不然没效果
外部调用:
<div width="100%" >
<!-- 引入音频播放app -->
{include file="app/audio" /}
<!--End 引入音频播放app -->
<script>
console.log('11111111111');
// addDynamicNameAttr_audio("{$article.a_content_aud1}");
addDynamicNameAttr_audio("http://yun.it7090.com/video/XHLaunchAd/video01.mp4");
</script>
</div>
现在执行第8行,调用外部资源,这样是成功的
但是当我调用系统内部资源的时候,就是执行上面第7句时,就会遇到

也就是我的系统不允许这样直接请求资源
这是因为这样做的话资源不是php发给我们的,而变成了js请求的资源一样,自然不行。(说的有点牵强,大概就是这个意思)
2、php方式(最开始就动态指定audio的src)
上面的js操作不能解决问题,所以我们就从php出发,因为php运行在js的前面,如果php那个时候解决了audio的src,那么就不用js再来请求资源了,也就不会遇到上面的问题
audio插件整体:
<?php
if(!isset($fry_audio_type)) $fry_audio_type=null;
$fry_audio_src="__STUDENT__/AudioPlayer/AudioPlayer/audio/BlueDucks_FourFlossFiveSix.mp3";
if($fry_audio_type=="article.a_content_aud1"){
$fry_audio_src=$article['a_content_aud1'];
}
?>
<link rel="stylesheet" href="__STUDENT__/AudioPlayer/AudioPlayer/css/audioplayer.css" />
<script src="__STUDENT__/AudioPlayer/AudioPlayer/js/audioplayer.js"></script>
<script>
/*
VIEWPORT BUG FIX
iOS viewport scaling bug fix, by @mathias, @cheeaun and @jdalton
*/
(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));
</script>
<div id="wrapper">
<audio preload="auto" id="fry_audio" controls>
<source src="{$fry_audio_src}">
</audio>
<script>$( function() { $( 'audio' ).audioPlayer(); } );</script>
</div>
外部调用:
<!--3、音频部分-->
{if condition="strlen($article['a_content_aud1'])>0"}
<div width="100%" >
<?php $fry_audio_type="article.a_content_aud1";?>
<!-- 引入音频播放app -->
{include file="app/audio" /}
<!--End 引入音频播放app -->
</div>
{/if}
<div width="100%" >
<?php $fry_audio_type=null;?>
<!-- 引入音频播放app -->
{include file="app/audio" /}
<!--End 引入音频播放app -->
</div>
上面的代码是两次掉用,这样可以通过不同的调用赋给audio不同的src

如何动态改变audio的播放的src的更多相关文章
- 解决javascript动态改变img的src属性图片不显示问题
首先讲下这个bug的出现的情况,页面中有<a href="JavaScript:void(0)" onclick="document.getElementById( ...
- 动态替换iframe的src及动态改变iframe的高度
实现效果:点击左侧右侧内容变化,但左侧保持不变(如折叠等) 动态替换iframe的src <iframe width="100%" frameBorder="0&q ...
- html5 audio音频播放全解析
序 html5开启了一个新时代,因为它让浏览器本身变得不那么被动,audio api就是一个典型的列子,在html5还没确定之前,如果想要在网页上听音乐看视频唯一的办法就是用flash意思是当你没有给 ...
- jquery动态改变div宽度和高度
效果体验:http://keleyi.com/keleyi/phtml/jquery/23.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X ...
- 模仿iframe框架,由分隔栏动态改变左右两侧div大小———基于jQuery
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- 动态改变actionbar上menu的图标
工作中遇到了一个需求是,在滚动的时候让actionbar上的图标进行变色.实现后在这里总结下思路. 一.先在主题中定义好Actionbar的style <style name="App ...
- 【Android多屏适配】动态改变Listview item高度
在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...
- 通过html5的range属性动态改变图片的大小
range属性已经是很成熟的属性了,我们可以使用这个属性进行动态调整图片的宽度,其中原理在于通过不断获取range的值,并赋予给所需要的图片,进而达到动态改变图片的效果.下面贴出具体的代码,主要参照了 ...
- WPF动态改变主题颜色
原文:WPF动态改变主题颜色 国内的WPF技术先行者周银辉曾介绍过如何动态改变应用程序的主题样式,今天我们来介绍一种轻量级的改变界面风格的方式--动态改变主题色. 程序允许用户根据自己的喜好来对界面进 ...
随机推荐
- C语言基础-第六章
数组和字符串 1.一维数组 数组当中最简单的数据 声明: 类型说明符 数组名[常量表达式] int a[3];说明a的长度为3,那么给a赋值的语句是:a={1,2,3}; 2.多维数组 2.1 二维数 ...
- 大数问题(相加) A + B
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum o ...
- ArchLinux 音乐播放客户端ncmpcpp和服务端mpd的配置
Ncmcpp是一个mpd客户端,它提供了很多方便的操作 MPD是一个服务器-客户端架构的音频播放器.功能包括音频播放, 播放列表管理和音乐库维护,所有功能占用的资源都很少. --取自 wiki.arc ...
- [NOIP2014普及组]子矩阵
题目:洛谷P2258.Vijos P1914.codevs 3904. 题目大意:给你一个矩阵,要你找一个r行c列的子矩阵,求最小分值(子矩阵和分值的定义见原题). 解题思路:n和m比较小,考虑暴力. ...
- python虚拟环境virtualenv、virtualenv下运行IDLE、powershell 运行脚本由执行策略引起的问题
一.为什么要创建虚拟环境: 应为在开发中会有同时对一个包不同版本的需求,创建多个开发环境就能解决这个问题.或许也会有对python不同版本的需求,这就需要使用程序来管理不同的版本,virtualenv ...
- 今日SGU 5.29
sgu 299 题意:给你n个线段,然后问你能不能选出其中三个组成一个三角形,数字很大 收获:另一个大整数模板 那么考虑下为什么如果连续三个不可以的话,一定是不存在呢? 连续上个不合法的话,一定是 a ...
- iOS日期转换之UTC/GMT时间格式
GMT只需要将代码中的UTC替换为GMT即可 //将本地日期字符串转为UTC日期字符串 //本地日期格式:2013-08-03 12:53:51 //可自行指定输入输出格式 -(NSString *) ...
- WHU 1537 Stones I
题目见: http://acm.whu.edu.cn/land/problem/detail?problem_id=1537 这个题相当无语,学长给的解法是:枚举取的个数k,然后对每个k贪心,取其中的 ...
- impala jdbc4的group by语句的bug,加上limit没错
这里用的ImpalaJDBC4.jar SELECT field1 alias1 FROM table1 where field1 ='xxxx' group by alias1 这句话impala会 ...
- Android 连接网络数据库的方式
以连接MS SQL(sqlserver数据库)的网络数据库为例,从当前搜集的资料来看,一共有两种方式:在Android工程中引入JDBC驱动,直接连接:通过WebService等方法的间接连接. 采用 ...