惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 胖子

Markdown Reader 插件改造 Visual Studio Code 使用心得 Philips K700 使用感受 XML、二进制、SOAP的序列化 清除UTF-8文件的BOM头 powershell 相关 FireFox在windows2003的操作系统支持Windows Media Player插件 关于javascript编码url的中文参数 [转]IIS 6.0中配置HTTP Gzip压缩 数码相机在windows2003下的问题 MyGeneration连接MySql数据库的解决办法 一个简单的操作活动目录的类(ADHelper) SmartPhone下解决rm、rmvb等格式电影播放的方案(参考意见) 读写类似web.config的xml格式文件 - 胖子 - 博客园 Awstats 安装使用说明 关于博客园的聚合问题 胖子的故事(四) 胖子的故事(三) 胖子的故事(二)
关于保持页面滚动条位置的一些体会
胖子 · 2005-09-01 · via 博客园 - 胖子

在一个很长的列表中进行操作,当用户触发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中的状态
        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>