       @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}))

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

    initialize: (options) ->
      super()

        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)

      Backbone.on('window:hashChange', _.debounce(adjustHashTop, 150))

      # closing is triggered in 'onBeforeClose'
      @on('closing', ->
