Javascript 显示不同视频客户端宽度的控制台
看看这个: 这是HTMLJavascript 显示不同视频客户端宽度的控制台,javascript,html,html5-video,Javascript,Html,Html5 Video,看看这个: 这是HTML <video> <source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4"> </video> 视频是320x176像素。但是,vw变量输出为300(应为320)。但当您检查视频属性时,您可以看到它显示客户端宽度为320 这是调试还是我遗漏了什么?提前谢谢 300是元素的默认宽度。在视频加载之前执行JS,并设置元素的适当宽度。如果将JS包
<video>
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
视频是320x176像素。但是,vw变量输出为300(应为320)。但当您检查视频属性时,您可以看到它显示客户端宽度为320
这是调试还是我遗漏了什么?提前谢谢 300是
元素的默认宽度。在视频加载之前执行JS,并设置元素的适当宽度。如果将JS包装在setTimeout()
中,您将看到正确的宽度。现场观看:
300是
元素的默认宽度。在视频加载之前执行JS,并设置元素的适当宽度。如果将JS包装在setTimeout()
中,您将看到正确的宽度。现场观看:
在尝试访问变量之前,您应该等待加载视频元数据,使用
loadedmetadata
事件是确定性的(这意味着给定相同/不同的输入,输出不会表现出不同的行为),而setTimeout
是非确定性的
video.addEventListener("loadedmetadata", function() {
console.log(video.clientWidth)
}, true)
我建议您查看完整的列表,因为您可能会发现其他有用的列表 在尝试访问变量之前,您应该等待加载视频元数据,使用
loadedmetadata
事件是确定性的(这意味着给定相同/不同的输入,输出不会表现出不同的行为),而setTimeout
是非确定性的
video.addEventListener("loadedmetadata", function() {
console.log(video.clientWidth)
}, true)
我建议您查看完整的列表,因为您可能会发现其他有用的列表 如果你用setTimeout()来包装你的控制台日志,超时时间为1000毫秒,你会看到什么?@Nijikokun same看起来像是我关了一秒钟,问题是视频必须加载到内存中。然后,您将看到正确的视频大小:)请查看下面我的答案,了解每次获取值的确定方法。如果您使用setTimeout()将控制台日志包装为1000毫秒的超时,您会看到什么?@Nijikokun same看起来像我关闭了一秒钟,问题是视频必须加载到内存中。然后,您将看到正确的视频大小:)查看下面我的答案,了解每次获取值的确定方法。