ReScroller 1.0 for .NET

This code is an ASP.NET (VB) custom server control to maintain the browser's scroll position after postback. Unlike the .NET/IE SmartNavigation feature, it works with all browsers and does not produce weird quirks.

1. To use this control, you must confirm which web standard you are targeting. For XHTML, you are ready to compile. If you are using HTML4 or anything else, you will need to change line 17 to use the correct document object. XHTML uses documentElement and older standards such as HTML4 use body. (I could have automated the selection, but I only use XHTML so not an issue. If you want, change the javascript to test for the documentElement and use it otherwise use body).

2. Change the namespace if you wish to bundle it into one of you existing control assemblies, otherwise leave at as is, but you will need to register it on the page (and in Visual Studio).

3. Compile the control to an assembly / dll.

4. Register the assembly in your page (if you used my namespace):

<%@ Register TagPrefix="HB" NameSpace="Bean.Controls" Assembly="ReScroller" %>

5. Insert this tag inside the form tag of your page:

<HB:ReScroller id="rescroller" runat="server" />

6. That's It! It will automatically work now.

SmartNavigation

Inserting SmartNavigation="True" into the page declaration of your aspx page will provide similar functionality to this control, but it has some major failings. I got very excited the first time I used it, but then after a while I started to notice a lot of badness:

1. Only suppose to work with IE. I've heard it may work with some other very new browsers, but this is unconfirmed.
2. It breaks the .focus() method.
3. It often produces very weird issues: javascript timer running very fast, style sheets not loading, page deforming, etc.

Licence

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, with only one condition: References to the original author in the comments of the source code/scripts must remain in place. No other conditions or restrictions are made.
This software is provided "as is" without express or implied warranty.

If you improve this code, please send me a copy! Thanks!
Donate via PayPal

Hunter Beanland
hunter @ beanland.net.au

http://www.beanland.net.au/programming/dotnet/

Version History
1.0 Original.