Javascript window.Scroll在window.onload之后无法持续工作(计时问题?)
我希望有人能向我解释一下我在window.scrollTo上看到的这种奇怪行为。 这不管用Javascript window.Scroll在window.onload之后无法持续工作(计时问题?),javascript,dom-events,Javascript,Dom Events,我希望有人能向我解释一下我在window.scrollTo上看到的这种奇怪行为。 这不管用 document.addEventListener('DOMContentLoaded', function() { console.log('window.scrollY = ', window.scrollY); window.scrollTo(0, 200) console.log('window.scrollY = ', window.scrollY); }); 。。。嗯
document.addEventListener('DOMContentLoaded', function() {
console.log('window.scrollY = ', window.scrollY);
window.scrollTo(0, 200)
console.log('window.scrollY = ', window.scrollY);
});
。。。嗯,它确实有效,有点
它适用于初始页面加载,但不刷新(cmd+shift+r
)…
控制台输出为:
window.scrollY = 0
window.scrollY = 200
所以从这个意义上说,它的工作除了页面不会滚动,当您键入窗口时。将
滚动到开发人员控制台中,确实会显示0
所以滚动设置得太早了吗?
我真正感到困惑的是:
var delay_ms = 0;
document.addEventListener('DOMContentLoaded', function() {
setTimeout(function() {
window.scrollTo(0, 200);
}, delay_ms);
});
某种程度上,这是可行的,但并非始终如一
然而
var delay_ms = 10;
增加延迟,即使只增加10毫秒,也会显著提高性能!到了我还没有失败的地步
起初,我认为对于身高来说,DOMContentLoaded
可能太早,无法正确评估,因此我将我正在收听的事件切换到:
window.addEventListener('load', function() { /* ... */ });
根据
加载事件在文档加载过程结束时激发。此时,文档中的所有对象都在DOM中,所有图像、脚本、链接和子帧都已完成加载
因此,我无法想象在我将滚动设置为200
之后,将滚动设置为0
有人知道这个时间发生了什么吗?
掩护我的基地
- 是的,有滚动的空间
- 这是一个完整的复制代码
- 我在mac电脑上,使用chrome浏览器