Correctly handle overflowing content when choosing scroll anchor
Fix two issues found while testing HTML side-by-side mode with a BBC news article [1]: 1. When traversing the DOM tree to choose a scroll anchor, elements were skipped if their bounding rect (`element.getBoundingClientRect()`) did not intersect the viewport. This however did not account for content which overflows the element but is still visible to the user because it is not clipped. 2. The code used the intersection of the scroll root's bounding client rect and `(0, 0, window.innerWidth, window.innerHeight)` to get the viewport rect. In [1] the root element's bounding rect only covers the top (100vw, 100vh) pixels of the document, and most of the actual content of the page overflows that area. Resolve the issue by always using `(0, 0, window.innerWidth, window.innerHeight)` as the viewport, except when explicitly overridden (eg. in tests) [1] https://www.bbc.co.uk/news/world-europe-60693166
Showing
Please register or sign in to comment