1. Setting the page directive attribute "MaintainScrollPosition" to be false
2. Registering a start up script: $(window).scrollTop(0)
3. Registering a start up script: $("#s4-workspace").scrollTop(0)
4. Attempted to register the the functions via a client script block to add a "pageLoaded" event
The short of it was that none of these worked. I decided to dive in to the HTML source and discovered a "_maintainWorkspaceScrollPosition" hidden field. This looked amazingly like the MaintainScrollPosition functionality, I thought I might be on the right path. The "Workspace" term jumped out at me since the SharePoint custom application page's content is in the s4-workspace; I started to get the feeling that this was a SharePoint feature. After searching all the files for the hidden field, I discovered it was only referenced in the SharePoint JavaScript files. Searching the internet did not yield any solutions on ways to disable the feature. So I generated a function that I would execute to scroll the page to the top.
1 2 3 4 5 | function scrollToTop() { $(window).scrollTop(0); $( "#s4-workspace" ).scrollTop(0); $( "#_maintainWorkspaceScrollPosition" ).val(0); } |
The function above probably does more than required, but I don't control the Master Page and need to make sure the page can tolerate changes to Master Page style changes.
The server side needs to register a script to execute on the post back. This is a simple line that can be thrown about anywhere.
1 | ScriptManager.RegisterStartupScript( this , this .Page.GetType(), "scrollToTop" , "scrollToTop();" , true ) |
2 comments:
Excellent, you save my life!
Thanks Brock, you're a real life saver!
Post a Comment