[whatwg] Proposing: "autoscroll" event

James Greene james.m.greene at gmail.com
Mon May 13 20:48:09 PDT 2013

I love that idea!

    James Greene

On Mon, May 13, 2013 at 9:53 PM, Kyle Simpson <getify at gmail.com> wrote:

> Increasingly, sites are doing client-side rendering at page load time,
> which is breaking the (useful) functionality of being able to have a #hash
> on a URL that auto-scrolls the page to make some element visible after
> page-load.
> A perfect example of this problem is that most #hash URLs (as far as
> scrolling) are broken on gist.github and github when viewed in recent
> Firefox.
> https://gist.github.com/getify/5558974
> I am proposing that the browser throw a JS event right before it's about
> to try an auto-scroll to an element with the #id of the #hash in the URL
> (during a page's initial loading), called for instance "autoscroll". The
> purpose of this event is to simplify how a web app can detect and respond
> to a URL having a #hash on it that would normally create a scrolling
> behavior, even if the element isn't yet rendered for the window to scroll
> to. That gist shows how you could listen for the event, and store for later
> use which target-ID was going to be scrolled to, and manually scroll to it
> at a later time.
> If you have an app that does client-side rendering where it can break
> auto-scrolling, but you want it to work properly, you can of course
> manually inspect the URL for a #hash at any point, but it's a bit awkward,
> especially if you are already relying entirely on event-driven architecture
> in the app, and you want to just detect and respond to events. This
> "autoscroll" event will normalize that handling.
> Notice the polyfill code in the above gist shows that you can obviously
> detect it yourself, but it's awkward, and would be nice if it were just
> built-in.
> Additionally, having it be a built-in event would allow an app to prevent
> the browser from doing unwanted auto-scrolling in a very simple and natural
> way, by just trapping the event and calling `preventDefault()`. Currently,
> there's not really a clean way to accomplish that, if you needed to.
> --Kyle

More information about the whatwg mailing list