我正在尝试在用户单击我的ASP.NET按钮后生成一个“页面滚动动画”。
非常简单的方法:
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()。干净的结果。
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);
// ###终端解决方案###
谢谢!
发布于 2011-08-02 13:56:42
只需手动调用ASP.Net的WebForm_RestoreScrollPosition()。干净的结果。
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);
发布于 2011-08-01 21:24:02
在页面中设置MaintainScrollPositionOnPostback="false"
in Page指令,以禁用回发时的默认页面滚动。然后,您的代码应该根据逻辑滚动页面。
https://stackoverflow.com/questions/6904580
复制