ASP.NET1.1 -- 实现页面刷新保持滚动条位置

本文介绍了两种在ASP.NET中实现页面滚动条位置记忆的方法:一是通过配置web.config启用smartNavigation;二是使用JavaScript脚本控制滚动条位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      写ASP.NET页面,最头痛的就是每次刷新后,滚动条又回到了页面顶端,如果页面比较长,这样滚动起来就很痛苦,虽然Ajax的出现,这个问题得到了解决,可是不少以前的项目还是得手动去滚动页面,这样客户体验非常差。这里介绍两个简单的方法,实现页面滚动条的位置保持

      1.smartNavigation

      如果想省事,这个方法最简单了,设置项目的web.config属性,就能做到滚动条记忆

< 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,实在不行了,再考虑第二种。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值