Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 显示不同视频客户端宽度的控制台_Javascript_Html_Html5 Video - Fatal编程技术网

Javascript 显示不同视频客户端宽度的控制台

Javascript 显示不同视频客户端宽度的控制台,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包

看看这个:

这是HTML

<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看起来像我关闭了一秒钟,问题是视频必须加载到内存中。然后,您将看到正确的视频大小:)查看下面我的答案,了解每次获取值的确定方法。