Javascript 为什么window.scrollTo()需要setTimeout()才能工作?

Javascript 为什么window.scrollTo()需要setTimeout()才能工作?,javascript,scroll,dom-events,Javascript,Scroll,Dom Events,这是一个HTML页面,在左上角显示三个方形div: window.addEventListener('load',function(){ console.log('已触发加载事件') 滚动到(500,0); //setTimeout(函数(){window.scrollTo(500,0);},0); }) body{height:100vh} .bigwidth{ 宽度:2000px; 显示:块; } .广场{ 宽度:100px; 高度:100px; 显示:块; 位置:绝对位置; } 绿色的{

这是一个HTML页面,在左上角显示三个方形div:

window.addEventListener('load',function(){
console.log('已触发加载事件')
滚动到(500,0);
//setTimeout(函数(){window.scrollTo(500,0);},0);
})
body{height:100vh}
.bigwidth{
宽度:2000px;
显示:块;
}
.广场{
宽度:100px;
高度:100px;
显示:块;
位置:绝对位置;
}
绿色的{
背景色:#75af99;
}
雷迪什先生{
背景色:#ff9b98;
}
.蓝色{
背景色:#aabbff;
}
白种人{
背景色:#eaeaea;
}
* {
填充:0;
保证金:0;
}


“在左上角显示三个方形div”-如果是这样,那么您应该首先为开发目的准备一个更好的测试浏览器-一个容错性更低的浏览器。(大多数CSS长度值都缺少单位。)@CBroe我看不出这种注释对任何人/任何事都有什么帮助。Chrome是做开发工作的推荐浏览器,我们离回答最初的问题不远了。如果“px”不见了,我建议你下次自己添加。你是不是告诉我你的Chrome显示了这个缺陷代码?当我把它放在这里时,
load
事件在每次加载时都会触发,这并不意味着实际渲染。它很可能不会在任何地方滚动,因为在那一刻根本没有任何东西的“高度”,这将首先允许在任何地方滚动。不管超时时间多么短,你都可以在这里读到f.e.@CBroe是的,还有我的旅行。(现在重新检查)但是它在JSFIDLE中不起作用,这是真的。所以我会编辑。