保持滚动条位置的问题

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值