<system.web>
<pages smartNavigation="true"/>
</system.web>
也可以只針對某一個頁面來設置這個屬性,他的實現原理,其實是對頁面的輸出進行了一次封裝,將整個頁面放在了一個IFrame裏
...
<IFRAME ID="__hifSmartNav" NAME="__hifSmartNav" STYLE="display:none"
src="/aspnet_client/system_web/1_1_4322/SmartNav.htm"></IFRAME>
...
<script language="JScript" src="/aspnet_client/system_web/1_1_4322/SmartNav.js"></script>
...
有興趣可以去研究一下SmartNav.js,我這裏就不多說了,可以參考http://www.cnblogs.com/birdshome/archive/2004/09/03/39115.aspx
2.使用腳本來控制滾動
使用第一種方法確實方便,但由於使用的是IFrame,會出現一些不兼容的情況,這裏再介紹另一個方法
window.onload =function()
{
if(getcookie("height")!=null)
document.body.scrollTop=getcookie("height");
}
window.onunload =function ()
{
setcookie("height",document.body.scrollTop);
}
function getcookie(sName)
{
var aCookie = document.cookie.split("; ");
for (var i=0; i < aCookie.length; i++)
{
var aCrumb = aCookie[i].split("=");
if (sName == aCrumb[0])
return unescape(aCrumb[1]);
}
return null;
}
function setcookie(sName, sValue)
{
date = new Date();
date.setTime(date.getTime()+5000); //5 second
document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
}
也就是說在頁面onunload的時候,記住滾動條位置,在onload的時候控制滾動條移動,從客戶體驗來看,第一種要好於第二種,從兼容來看,第二種又較,如果smartNavigation使用後沒有出現異常(主要是客戶端的)建議還是使用smartNavigation,實在不行了,再考慮第二種。
_________________________________
頁面提交或更新數據後,返回頁面重新回到原來位置,包括滾動條的位置都可以保存。
這裏用到的是asp.net中page對象的一個屬性:
<!--
MaintainScrollPositionOnPostback - 如果爲true,瀏覽器中頁面位置將通過回送保留
-->
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %>
當然,這個屬性也可以在web.config中設置
在 System.web 下面的Pages元素
<pages
buffer="[True|False]"
enableEventValidation="[True|False]"
enableSessionState="[True|False|ReadOnly]"
enableViewState="[True|False]"
enableViewStateMac="[True|False]"
smartNavigation="[True|False]"
autoEventWireup="[True|False]"
pageBaseType="typename, assembly"
userControlBaseType="typename"
validateRequest="[True|False]"
masterPageFile="file path"
theme="string"
styleSheetTheme="string"
maxPageStateFieldLength="number"
compilationMode="[Always|Auto|Never]"
pageParserFilterType="string"
viewStateEncryptionMode="[Always|Auto|Never]"
maintainScrollPositionOnPostBack="[True|False]"
asyncTimeout="number"
>