我希望有人可以向我解释我在window.scrollTo中看到的奇怪行为。
这不起作用。
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
所以在这个意义上它的工作...... 除了页面没有滚动,当你在开发控制台中输入window.scrollY
时,确实会显示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中,并且所有图像,脚本,链接和子帧都已完成加载。
所以我无法想象在我将其设置为0
之后将滚动条设置为200
...
有没有人对此时间发生的事情有任何了解?
覆盖我的基地