javascript - 通过jquery动态的设置video src的值无法播放视频?
问题描述
<p id='video-box'> <video controls> <source src='https://www.haobala.com/wenda/3141.html'> </video></p><a href='javascript:;' src='http://www.w3school.com.cn/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();});
demo在这里https://jsfiddle.net/r9u1cn7o/作一个通过点击不同的标签弹出弹框播放相应的视屏,但是通过jquery成功的给src赋值了,但是不知道为什么播放不了?
问题解答
回答1:通过 jQuery 确实是给 source 的 src 赋值成功,从调试来看,浏览器并没有去发起请求去获得相应的视频,而只是单纯的将 a 标签的 src 中的值赋值给 source 了。
但是如果这么做,浏览器就会去请求地址获得视频文件:
$('.dj').on('click', function() { var src = $(this).data('src'), sourceDom = $('<source src='https://www.haobala.com/wenda/3141.html'+ src +''>'); $('#video-box video').append(sourceDom); $('#video-box').show(); // 自动播放 $('#video-box video')[0].play()});
因此,可以推断出来的是,当 video 中存在 source 标签的时候,浏览器渲染之后会自动去获取地址,即便地址改变,浏览器也不会再去获取地址。但是通过动态的插入 source 标签的方式,可以触发浏览器进行重排,从而去获取相应地址的文件进行播放。
回答2:<video> <source src='https://www.haobala.com/wenda/xxx.mp4'/> <source src='https://www.haobala.com/wenda/xxx.ogg'/></video>
source 里的 src 只会在渲染的时候被 check 一次.要动态调整 src , 你应该从 video 入手, 改成这样应该就没问题了$('#video-box video').prop('src',src)
回答3:别用source标签,直接写到video标签里;另外用attr()吧。还有就是video标签的width和height别写到style里,拿出来~
回答4:jsfidle不能嵌入视频. 换到本地就好了
回答5:video标签支持的视频格式有(1)H.264编码的mp4文件(2)webm(3)ogg 其他后缀的文件因为专利等问题暂时不支持,可以考虑转码试试
回答6:加个play()事件就好了
相关文章:
1. 为什么span的color非要内联样式才起作用?2. angular.js - angular-ui-bootstrap 报错无法使用?3. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始4. python - Django ManyToManyField 字段数据在 admin后台 显示不正确,这是怎么回事?5. python - 如何修改twisted自带的日志输出格式?6. docker - 如何修改运行中容器的配置7. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?8. 请问一下各位老鸟 我一直在学习独孤九贱 现在是在tp5 今天发现 这个系列视频没有实战9. 在cmd下进入mysql数据库,可以输入中文,但是查看表信息,不显示中文,是怎么回事,怎新手,请老师10. 如何使用git对word文档进行版本控制?

网公网安备