保持滾動條位置的問題

<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"
  >  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章