When a page is zoomed in macOS Safari (using ⌘+/⌘-), calling scrollBy() causes getBoundingClientRect() to report incorrect values. As soon as the user scrolls, the values become correct again.

To reproduce:

  1. Zoom the page somewhat
  2. Open the Web Inspector
  3. Scroll a header (e.g. header 2) to the top of the viewport
  4. Run repro_scrollToHeading(3): the top of heading 3 does not properly line up with the top of the viewport
  5. Run repro_scrollToHeading(2): the top of heading 2 does properly line up with the top of the viewport
  6. Repeat from step 3 with any heading: it's always the last manually scrolled-to position that reports correct coordinates/always for correct scroll-to

Also notice: when you manually scroll for the first time after a scrollBy() call, the scroll values reported in the console instantly jump to more correct numbers.

Filed on WebKit Bugzilla as Bug 267493.


0

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Felis imperdiet proin fermentum leo vel. Accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Sit amet consectetur adipiscing elit pellentesque habitant morbi tristique senectus. Phasellus egestas tellus rutrum tellus pellentesque eu tincidunt. Vitae tortor condimentum lacinia quis. Lacus luctus accumsan tortor posuere ac ut consequat. In hac habitasse platea dictumst. Platea dictumst vestibulum rhoncus est pellentesque elit. Diam maecenas sed enim ut sem viverra aliquet eget sit.

1

Vitae justo eget magna fermentum iaculis eu. Iaculis nunc sed augue lacus viverra. Amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Nunc congue nisi vitae suscipit tellus. In massa tempor nec feugiat nisl pretium fusce id. Massa placerat duis ultricies lacus. Sed vulputate odio ut enim blandit. Semper auctor neque vitae tempus quam pellentesque nec nam. Quam quisque id diam vel quam elementum pulvinar etiam non. Massa sed elementum tempus egestas sed sed risus pretium. Neque gravida in fermentum et sollicitudin ac orci.

2

Sed adipiscing diam donec adipiscing. Mattis ullamcorper velit sed ullamcorper morbi. Ut sem nulla pharetra diam sit. Sodales ut etiam sit amet nisl purus. Dolor sit amet consectetur adipiscing elit ut. Amet facilisis magna etiam tempor orci eu lobortis. Aliquet sagittis id consectetur purus ut faucibus. Neque viverra justo nec ultrices dui sapien eget mi. Ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at augue. Nulla aliquet enim tortor at.

3

Aliquet sagittis id consectetur purus ut faucibus. Felis eget velit aliquet sagittis id consectetur purus ut faucibus. Diam quam nulla porttitor massa. Imperdiet nulla malesuada pellentesque elit. Vestibulum sed arcu non odio euismod. Pellentesque nec nam aliquam sem et tortor consequat id porta. Consequat semper viverra nam libero justo laoreet sit amet. Malesuada pellentesque elit eget gravida cum sociis. Nulla facilisi morbi tempus iaculis urna. Sit amet volutpat consequat mauris nunc congue. At tellus at urna condimentum mattis pellentesque id nibh tortor. Pharetra vel turpis nunc eget lorem dolor sed. Nisl purus in mollis nunc sed id. Orci nulla pellentesque dignissim enim sit amet venenatis urna cursus. Lobortis feugiat vivamus at augue eget arcu. Enim sit amet venenatis urna cursus eget nunc scelerisque viverra. In nulla posuere sollicitudin aliquam ultrices sagittis orci. Ut etiam sit amet nisl. Dolor magna eget est lorem ipsum dolor sit.

4

Ut morbi tincidunt augue interdum velit euismod in pellentesque massa. Mauris pellentesque pulvinar pellentesque habitant. Facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum. Elit duis tristique sollicitudin nibh sit amet commodo. Tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse. Vitae nunc sed velit dignissim sodales ut eu. Dictum varius duis at consectetur lorem donec massa. Nulla porttitor massa id neque aliquam vestibulum morbi blandit. Turpis egestas sed tempus urna et pharetra pharetra. Nisl nunc mi ipsum faucibus. Dignissim convallis aenean et tortor. Vel orci porta non pulvinar neque laoreet suspendisse.