H5 通过jquery动态的设置video src的值无法播放视频?

时间:2024-10-30 11:16:40
通过jquery动态的设置video src的值无法播放视频?参考链接: h5 动态更改链接

<div >
 <video style="object-fit: fill;width: 200px;height: 50px;" controls>
    <source src="">
  </video>
</div>
<a class="dj" href="javascript:;" data-src="http:///i/movie.mp4">点击</a> 
*{padding:0;margin:0;}
#video-box{display:none;}
$(".dj").on("click", function() {
   var src = $(this).data("src");
   $("#video-box source").prop("src",src)
   $("#video-box").show();
});
答案如下:
通过 jQuery 确实是给 source 的 src 赋值成功,从调试来看,浏览器并没有去发起请求去获得相应的视频,
而只是单纯的将 a 标签的 data-src 中的值赋值给 source 了。
但是如果这么做,浏览器就会去请求地址获得视频文件:
$(".dj").on("click", function() {
   var src = $(this).data("src"),
       sourceDom = $("<source src=\""+ src +"\">");
       
   $("#video-box video").append(sourceDom);
   $("#video-box").show();
   
   // 自动播放
   $("#video-box video")[0].play()
});
因此,可以推断出来的是,当 video 中存在 source 标签的时候,浏览器渲染之后会自动去获取地址,即便地址改变,
浏览器也不会再去获取地址。但是通过动态的插入 source 标签的方式,可以触发浏览器进行重排,从而去获取相应地址的文件进行播放。


******************************分割线*********2018年5月24日14:52:58*********************************
    上面那个方法,经测试,只能上传一次的时候是有效果的,如果要替换多次视频地址,就会显示第一次的视频,还有有一点问题,

可以使用如下方式修改视频的播放地址,参考链接:/topics/392007814

   

	<div class="thumbImage"  style="display: none;">
	<!-- <img src="/allone-openaccount/resources/images/" /> -->
	<video  width="280" height="188" controls="controls" autoplay="autoplay">
	   <!-- <source src="/i/" type="video/ogg" /> -->
	  <source  src="" type="video/mp4" />
	  <!--  <source src="/i/" type="video/webm" />
	   <object data="/i/movie.mp4" width="320" height="240"> -->
	   <embed width="320" height="240" src="/i/" />
		<!--  </object> -->
	</video>
						</div>

 var videoSrc = ;//新的视频播放地址
 ("videoid").src=videoSrc ;
 ("videoid").play();