`
shirlly
  • 浏览: 1623174 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

刷新后保持页面滚动条位置javascript

阅读更多
在一个很长的列表中进行操作,当用户触发PostBack事件的时候,需要保持滚动条所在位置。搜索了一下,发现有两种方法可以实现。第一种,在msdn中找到的,设置Page的SmartNavigation(智能导航)属性为True。原文的备注是这样说的:


--------------------------------------------------------------------------------
在大多数情况下不要在代码中设置该属性。在 .aspx 文件的 @ Page 指令中将 SmartNavigation 属性设置为 true。请求该页时,动态生成的类将设置该属性。
Internet Explorer 5.5 或更高版本浏览器请求页时(或稍后),智能导航将通过执行下列功能提高用户对该页的操作能力:

消除导航导致的闪烁。
从一页移动到另一页时保持滚动位置。
保持导航之间的元素焦点。
在浏览器的历史记录中只保留最后一页的状态。
智能导航最适用于需要频繁回发但是其可是内容在返回时不会发生显著更改的 ASP.NET 页。在决定是否将该属性设置为 true 时,请仔细考虑这一点。



--------------------------------------------------------------------------------


对aspx页面来说,真的是很简单,只需要在页面头的@ Page后面多加一个SmartNavigation="True"就ok了,经简单的测试,没有问题,显示效果良好。但实际应用中却发现了问题。报告有 js脚本错误,无论如何也保持不了滚动条的状态。经分析,发现是该页面调用了ascx(Custom Control)的缘故,且拉长页面的也正是拜ascx控件所赐。于是乎,考虑将SmartNavigation="True"添加到ascx页面中。结 果,失败!ascx不支持@Page指令!虽说ascx也是一个页面,但和aspx还是有区别的。看来这种方法是解决不了这个问题的,只得令寻他法。

经 再次搜索,发现有人用js脚本写过这个方法(感谢宝玉提供的js)。js是在客户端运行的,只要我的aspx页面能解析到客户端,不都是html文件么, 从理论上说,用js的方法是可以实现的。于是马上动手试验,结果,成功!虽然当页面内容很多的时候有一个稍微明显的闪动,但滚动条可以保持在 PostBack前的位置,与需求相符,问题解决。


ps:另附js脚本

<script language="javascript">
<!--
//  获取当前文件名
function getFileName()
{
    var url = this.location.href;
    var pos = url.lastIndexOf("/");
    if(pos == -1)
        pos = url.lastIndexOf("\\");
    var filename = url.substr(pos+1);
    return filename;
}

function fnLoad()
{
    with(window.document.body)
    {
        addBehavior ("#default#userData");    // 使得body元素可以支持userdate
        load("scrollState" + getFileName());    // 获取以前保存在userdate中的状态
        if (sFirstEnter=="0")
        {
            scrollLeft = getAttribute("scrollLeft");    // 滚动条左位置
            scrollTop = getAttribute("scrollTop");
        }
    }
}
function fnUnload()
{
    with(window.document.body)
    {
        setAttribute("scrollLeft",scrollLeft);
        setAttribute("scrollTop",scrollTop);
        save("scrollState" + getFileName());    
        // 防止受其他文件的userdate数据影响,所以将文件名加上了
        // userdate里的数据是不能跨目录访问的
    }
}

window.onload = fnLoad;
window.onunload = fnUnload;
// -->
</script> 

 

通过对js函数的研究发现,只要具有scroll属性的html控件,都可以用这个方法来实现页面刷新后的滚动条的定位。当然,函数是要做一下改动。把 with(window.document.body)中的body改为其他控件的ID就可以了: with(window.document.all["控件ID"])

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lilinjian2001/archive/2006/08/31/1150332.aspx
分享到:
评论

相关推荐

    程序天下:JavaScript实例自学手册

    17.10 记录滚动条位置 17.11 彩色滚动条 17.12 Windows XP的滚动条 第18章 在线考题案例 18.1 在线考试代码 18.2 在线考试代码(二) 18.3 在线测试代码(三) 18.4 多选考试题 18.5 在线心理测试脚本 18.6 电脑检测...

    《程序天下:JavaScript实例自学手册》光盘源码

    17.10 记录滚动条位置 17.11 彩色滚动条 17.12 Windows XP的滚动条 第18章 在线考题案例 18.1 在线考试代码 18.2 在线考试代码(二) 18.3 在线测试代码(三) 18.4 多选考试题 18.5 在线心理测试脚本 18.6 电脑检测...

    JavaScript网页特效范例宝典源码

    实例043 应用JavaScript实现指定尺寸无边框无滚动条窗口 67 1.8 水平导航条应用 69 实例044 图片按钮导航条 69 实例045 导航条的动画效果 71 实例046 不用图片实现质感导航条 72 1.9 下拉菜单式导航条 73 实例047 二...

    ASP.NET开发实战1200例(第Ⅰ卷)第十二章

    第12章 CSS样式与JavaScript脚本 应用 458 ...实例324 在刷新或提交页面后保持页面滚动条 的位置 505 实例325 Javascript和C#之间的互相调用与 访问 506 实例326 制作网站后管理页中自动伸缩的菜单 507

    JavaScript完全自学宝典 源代码

    8.4.html 获取location对象的属性值并刷新页面。 8.5.html 包含链接的文档。 8.6.html 包含链接的文档打开的目标文档。 8.7.html 清空文档的内容。 8.8.html 是否调用close()方法的区别。 8.9....

    javascript函数的解释

    81.JS中的窗口滚动条:window.scroll(x,y) 82.JS中的窗口滚动到位置:window.scrollby 83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout 84.JS中的模态显示在IE4+行,...

    javascript跟随滚动条滚动的层(浮动AD效果)

    其实这个效果在很多网站中都能见到,其主要表现为网页两侧的浮动广告。看起来感觉很难做,但其实原理是很简单的,使用定时器没0.1秒检测层的位置并将其置在指定的位置(相对于窗口)。写了一个简单的代码: ...

    55种网页小技巧 ---- 下载无需扣分,具有一定收藏价值

    不要滚动条.html 光标是停在文本框文字的最后.html 关闭输入法.html 删除时确认.html 判断上一页的来源.html 去掉图片链接点击后,图片周围的虚线.html 取得控件的绝对位置.html 取消选取、防止复制.html ...

    107个常用javascript语句

    81.JS中的窗口滚动条:window.scroll(x,y) 82.JS中的窗口滚动到位置:window.scrollby 83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout 84.JS中的模態显示在IE4 行,...

    php+ajax实现无刷新动态加载数据技术

    我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览。这种技术我暂且称它为滚屏加载技术。我们发现很多网站用到这种技术,必应图片搜索、新浪微博、QQ空间等将该技术...

    ExtAspNet_v2.3.2_dll

    -这将会影响所有的aspx页面,一定要将工具条(Toolbars)和Items区分开来。 -祝你生日快乐 - 小师妹妹。 +2009-08-29 v2.0.8 -ExtAspNet支持多语言(en,zh_CN,zh_TW),可以在Web.config中修改。 -将所有的...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -这将会影响所有的aspx页面,一定要将工具条(Toolbars)和Items区分开来。 -祝你生日快乐 - 小师妹妹。 +2009-08-29 v2.0.8 -ExtAspNet支持多语言(en,zh_CN,zh_TW),可以在Web.config中修改。 -将所有的...

    Web端的UI框架BlendUI.zip

    顶部、右侧、底部的固定位置的元素可能会有抖动,或者弹出菜单无法点按页面其他位置关闭,点按不流畅等。 输入框的问题。包括输入法无法正常展开收起,框内部滚动问题。 本地缓存能力。包括已浏览的图片本地缓存,...

    70款经典Dreamweaver插件

    MX162506_persist_layer 不论浏览器的滚动条怎么拉,用这个插件插入的层总是保持在某个位置不动 MX156958_e-VueObject 插入e-Vue MPEG-4格式的文件 Sound 插入Midi、wav、Aiff等格式的声音文件 MX172878_sup_sub_...

    Dreamweaver 插件集

    不论浏览器的滚动条怎么拉,用这个插件插入的层总是保持在某个位置不动 MX156958_e-VueObject 插入e-Vue MPEG-4格式的文件 Sound 插入Midi、wav、Aiff等格式的声音文件 MX172878_sup_sub_ext 插入上标、...

    大名鼎鼎SWFUpload- Flash+JS 上传

    在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 Race-conditions when files are cached 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和后续扩展 ...

    jsp编程技巧集锦

    数字转中文 128 自动计算金额 129 JSP页面打印中使用WebBrowser控件 130 不刷新页面添加新的类别 131 鼠标滚动缩放图片 132 根据输入的表名生成输入数据表格 133 JSP表格输出到Excel 134.JSP...

    asp.net知识库

    如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp.net地址转义(分析)加强版 Web的桌面提醒(Popup) Using the Popup ...

Global site tag (gtag.js) - Google Analytics