我的网络应用中有一个HTML视频:
<video src="" id="video-container" controls></video>
Run Code Online (Sandbox Code Playgroud)
最初源是空的,我在加载一些数据后用JS动态更改它:
var video = document.getElementById('video-container');
...
video.src = VIDEO_URL;
video.play();
Run Code Online (Sandbox Code Playgroud)
过去工作得很好,它与Vue.js 1兼容,但是,由于我迁移到Vue.js 2,视频不再有效.对video.play(),video.pause()的调用对视频播放器没有影响,并且video.clientWidth等属性返回零值.
在Vue.js 2中是否与此元素不兼容?我错过了什么吗?
谢谢!
Iag*_*íaz 10
现在我对VueJS了解得更多,这个解决方案看起来好多了:
HTML
<div id="app">
<video ref="videoRef" src="" id="video-container" width="100%" controls></video>
</div>
Run Code Online (Sandbox Code Playgroud)
JS
new Vue({
el: "#app",
mounted: function() {
this.$refs.videoRef.src = "http://iandevlin.github.io/mdn/video-player/video/tears-of-steel-battle-clip-medium.mp4";
this.$refs.videoRef.play();
}
});
Run Code Online (Sandbox Code Playgroud)
Iag*_*íaz -3
当我按照 saurabh 的建议创建小提琴时,我找到了“解决方案”(即使我无法提供准确的解释)。
当我们使用 VueJS 2 并且在实例化 Vue 类之前定义视频元素 var 时,就会出现问题。奇怪的是,相同的代码也适用于 VueJS 1:
var video = document.getElementById('video-container');
new Vue({
el: "#app",
});
video.src = "http://iandevlin.github.io/mdn/video-player/video/tears-of-steel-battle-clip-medium.mp4";
video.play();
Run Code Online (Sandbox Code Playgroud)
如果 var 在 Vue 实例化之后定义,则一切都适用于版本 2。
jsfiddle.net/6qmjw5xd/1/
new Vue({
el: "#app",
});
var video = document.getElementById('video-container');
video.src = "http://iandevlin.github.io/mdn/video-player/video/tears-of-steel-battle-clip-medium.mp4";
video.play();
Run Code Online (Sandbox Code Playgroud)