繁体   English   中英

为什么像scrollY这样的窗口属性在分配后不会自动更新?

[英]Why window properties like `scrollY` don't update automatically after assignment?

因此,我在玩弄JavaScript窗口属性,并尝试覆盖window.scrollY属性,我注意到在运行window.scrollY = 123之后,即使滚动后它仍保持在123值,并且不会随滚动位置更新。

我知道以下事实:有一些特殊的方法,例如window.scrollTo用于设置滚动位置,但是我只是找到了它。

您可以在对象中重现此类行为,如果未明确设置属性,该对象将返回一些计算值。 但是设置后将返回设置值。

因此,尽管您看到的内容看起来很奇怪,但这实际上仅是因为它从未打算供用户设置window.scrollY而且一旦设置,它的值在尝试检索它时就不会改变。

 window.scrollTo(0,300)// set scrollY to 300 with proper setter const fakeWindow = new Proxy({}, { get: function(target, name) { if (!(name in target) && name === 'scrollY') { console.log('Returning callculated') return window.scrollY; } console.log('Returning user set value') return target[name]; } }); console.log("[before set]" + fakeWindow.scrollY); fakeWindow.scrollY = 5500; console.log("[after set] " + fakeWindow.scrollY); console.log('Actual window.scrollY=', window.scrollY) 
 <div style="height:2000px"></div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM