Skip to content

Latest commit

 

History

History
52 lines (34 loc) · 2.08 KB

README.md

File metadata and controls

52 lines (34 loc) · 2.08 KB

history.scrollRestoration ALSO Affects External Links

Typically, you want set history.scrollRestoration to manual to allow custom transitions.

This API applies to the current entry, which means the scroll state will also NOT be restored when navigating back from external links.

Scroll Restoration Happens AFTER popstate

This means you can always get current scroll position on popstate, but probably not in async callbacks (e.g. Promises). The actual restoration timing is implementation-related: It takes one animation frame in Chrome, and several more in Safari.

Get Scroll Position

To get scroll position, there's many APIs with different compatibility issues such as:

  • window.scrollY
  • window.pageYOffset
  • document.body.scrollTop
  • document.documentElement.scrollTop
  • document.scrollingElement.scrollTop

Here we don't examine these APIs one by one, here's a demo to test with:

NEVER Set scrollY or pageYOffset

Always use scrollTo to scroll your page. Through scrollY and pageYOffset are NOT readonly, which means they can be set, they WON'T change anymore once assigned. Take care!

scroll event not fired on UIWebview

Typically scroll event will be fired on scroll restoration. Whereas for iOS UIWebview-based browsers no scroll event will be fired. Try UC browser, Baidubox browser.