Javascript子回调?
我需要使用以下代码将HTML5视频添加到页面:Javascript子回调?,javascript,html,Javascript,Html,我需要使用以下代码将HTML5视频添加到页面: document.querySelector("#mydiv").appendChild(video); console.debug(document.querySelector("video").clientWidth); 我的问题是,第二行返回0,因为video标记加载要播放的视频需要一段时间。如果在加载页面后在控制台中手动键入第二行,则会得到实际值。有没有比使用超时来定期检查值是否已更新更好的方法来获取此值?Javascript是单线程的。
document.querySelector("#mydiv").appendChild(video);
console.debug(document.querySelector("video").clientWidth);
我的问题是,第二行返回0,因为
video
标记加载要播放的视频需要一段时间。如果在加载页面后在控制台中手动键入第二行,则会得到实际值。有没有比使用超时来定期检查值是否已更新更好的方法来获取此值?Javascript是单线程的。
您应该将代码放到事件循环中,这允许js和DOM一起工作
试试看:
document.querySelector("#mydiv").appendChild(video);
setTimeout(function(){
console.debug(document.querySelector("video").clientWidth);
});
向元素添加
video.onloadstart
事件
video.onloadstart(getClientWidth);
document.querySelector("#mydiv").appendChild(video);
function getClientWidth() {
console.debug(document.querySelector("video").clientWidth);
}
阅读更多。我需要做一些类似的事情,偶然发现了这个问题,因为我认为可能会有一个回调。结果是没有。因此,这里有另一种使用的方法 它看起来像这样:
//准备新元素
让video=document.createElement('video');
//将元素添加到DOM中。适用于任何元素
document.querySelector(“mydiv”).appendChild(视频);
//更新DOM将导致重新渲染,我们可以将其挂接到
window.requestAnimationFrame(()=>{
console.debug(document.querySelector(“视频”).clientWidth);
});代码>
视频转到这里:
appendChild
回调?你在找一个活动吗?例如?没错!谢谢我不知道这件事。如果你贴出这样的回复,我会接受的。