         newHeight = window.innerHeight - tocTop
         $toc.height("#{newHeight}px")
       Backbone.on('window:optimizedResize', setTocHeight)
+
       adjustHashTop = ->
         handleHeaderViewPinning()
         if isPinned
           obscured = $pinnable.height()
           top = $(window.location.hash).position().top
           $(window).scrollTop(top - obscured)
-          # On page load, might need to re-adjust
-          setTimeout(->
-            top2 = $(window.location.hash).position().top
-            if top2 != top
-              $(window).scrollTop(top2 - obscured)
-          , 125)
-      Backbone.on('window:hashChange', adjustHashTop)
+
+      Backbone.on('window:hashChange', _.debounce(adjustHashTop, 150))
 
       # closing is triggered in 'onBeforeClose'
       @on('closing', ->

    events:
      'keydown .media-title > .title input': 'checkKeySequence'
      'keyup .media-title > .title input': 'resetKeySequence'

    initialize: (options) ->
      super()

      @listenTo(@model, 'change:title change:currentPage change:currentPage.loaded', @updateUrl)
      @listenTo(@model, 'change:title change:currentPage change:currentPage.loaded', @updatePageInfo)
      @listenTo(@model, 'change:abstract', @updateSummary)

    triggerHashChange: (e) ->
      Backbone.trigger('window:hashChange')

    onRender: () =>
      @regions.media.append(new MediaEndorsedView({model: @model}))
