首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在asp.net MaintainScrollPositionOnPostback之后正确使用jquery.animate进行页面滚动

如何在asp.net MaintainScrollPositionOnPostback之后正确使用jquery.animate进行页面滚动
EN

Stack Overflow用户
提问于 2011-08-02 05:18:06
回答 2查看 1.6K关注 0票数 0

我正在尝试在用户单击我的ASP.NET按钮后生成一个“页面滚动动画”。

非常简单的方法:

代码语言:javascript
运行
复制
String script = "<script type=\"text/javascript\">" + "\n" +
                    "$(document).ready(function() {" + "\n" +
                        "var destination = $('#" + lblMessage.ClientID + "').offset().top;" + "\n" +
                        "alert($('html, body').scrollTop());" + "\n" +
                        "$('html, body').animate({ scrollTop: destination-20}, 500 );" + "\n" + 
                    "});" +
                "</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "scrollToMessage", script);

除了一件事之外,这一切都是可行的。我的按钮在页面折叠的下方,所以用户必须向下滚动才能单击它。一旦他点击它,我的代码就会做一些业务工作,然后注册javascript来滚动页面“从它所在的位置到我的标签所在的位置”(位置略低于零。但这不是正在发生的事情。我的javascript代码是在ASP.NET维护滚动位置之前执行的,因此,滚动动画从零到标签的位置,而不是从按钮的位置到标签的位置。

所以这个可爱的东西的全部意义在于窗外。

所以我该如何解决这个问题,我猜ASP.Net的MaintainScrollPositionOnPostback javascript是在我的document.ready之后执行的,我可以简单地尝试延迟它,理想的情况是在.NET滚动调整之后立即“排队”它。但我不知道该怎么做。

有谁有类似的问题吗?有什么提示吗?

// ###开始解决方案###

只需手动调用ASP.Net的WebForm_RestoreScrollPosition()。干净的结果。

代码语言:javascript
运行
复制
String script = "<script type=\"text/javascript\">" + "\n" +
                    "$(document).ready(function() {" + "\n" +
                        "if (typeof(WebForm_RestoreScrollPosition) == 'function') {" + "\n" +
                            "WebForm_RestoreScrollPosition();" + "\n" +
                        "}" + "\n" +
                        "var destination = $('#" + lblMessage.ClientID + "').offset().top;" + "\n" +
                        "$('html, body').animate({ scrollTop: destination-20}, 500 );" + "\n" +
                    "});" +
                "</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "scrollToMessage", script);

// ###终端解决方案###

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-02 21:56:42

只需手动调用ASP.Net的WebForm_RestoreScrollPosition()。干净的结果。

代码语言:javascript
运行
复制
String script = "<script type=\"text/javascript\">" + "\n" +
                "$(document).ready(function() {" + "\n" +
                    "if (typeof(WebForm_RestoreScrollPosition) == 'function') {" + "\n" +
                        "WebForm_RestoreScrollPosition();" + "\n" +
                    "}" + "\n" +
                    "var destination = $('#" + lblMessage.ClientID + "').offset().top;" + "\n" +
                    "$('html, body').animate({ scrollTop: destination-20}, 500 );" + "\n" +
                "});" +
            "</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "scrollToMessage", script);
票数 0
EN

Stack Overflow用户

发布于 2011-08-02 05:24:02

在页面中设置MaintainScrollPositionOnPostback="false" in Page指令,以禁用回发时的默认页面滚动。然后,您的代码应该根据逻辑滚动页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6904580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档