asp.net维护后如何正确使用jquery.animate页面滚动ScrollPositionOnPostback
我正在尝试在用户单击我的ASP.NET按钮后生成“页面滚动动画” 非常简单的方法:asp.net维护后如何正确使用jquery.animate页面滚动ScrollPositionOnPostback,jquery,asp.net,html,scroll,Jquery,Asp.net,Html,Scroll,我正在尝试在用户单击我的ASP.NET按钮后生成“页面滚动动画” 非常简单的方法: String script = "<script type=\"text/javascript\">" + "\n" + "$(document).ready(function() {" + "\n" + "var destination = $('#" + lblMessage.ClientID + "').of
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);
字符串脚本=”“+”\n+
$(文档).ready(函数(){“+”\n+
“var destination=$('#“+lblMessage.ClientID+”).offset().top;“+”\n”+
警报($('html,body').scrollTop());“+”\n+
$('html,body')。动画({scrollTop:destination-20},500);“+”\n“+
"});" +
"";
RegisterClientScriptBlock(this.GetType(),“scrollToMessage”,脚本);
除了一件事,这一切都起作用了。我的按钮位于页面折叠下方,因此用户必须向下滚动才能单击它。一旦他点击它,“我的代码隐藏”会做一些业务工作,然后注册javascript以滚动页面“从它原来的位置到我的标签所在的位置”(这只比位置0低一点。但事实并非如此。我的javascript代码是在ASP.NET维护滚动位置之前执行的,因此,滚动动画从零到标签位置,而不是从按钮位置到标签位置
所以,可爱的意义就在窗外
那么我该如何解决这个问题呢?我猜ASP.NET的MaintainScrollPositionOnPostback javascript是在我的文档之后执行的。准备好了,我可以试着延迟它,理想的情况是在.NET滚动调整之后立即“排队”它。但我不知道该怎么做
有人有类似的问题吗?有什么提示吗
//####开始解决方案###
只需手动调用ASP.NET的WebForm_RestoreSrollPosition()。清除结果
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);
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);
字符串脚本=”“+”\n+
$(文档).ready(函数(){“+”\n+
“如果(typeof(WebForm_RestoreScrollPosition)=='function'){”+“\n”+
“WebForm_RestoreSrollPosition();”+“\n”+
“}”+“\n”+
“var destination=$('#“+lblMessage.ClientID+”).offset().top;“+”\n”+
$('html,body')。动画({scrollTop:destination-20},500);“+”\n+
"});" +
"";
RegisterClientScriptBlock(this.GetType(),“scrollToMessage”,脚本);
//####结束解决方案###
谢谢!在页面中设置
MaintainScrollPositionOnPostback=“false”
在页面指令以禁用回发时的默认页面滚动。然后您的代码应该按照逻辑滚动页面。只需手动调用ASP.NET的WebForm\u RestoreSrollPosition()。清除结果
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);
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);
字符串脚本=”“+”\n+
$(文档).ready(函数(){“+”\n+
“如果(typeof(WebForm_RestoreScrollPosition)=='function'){”+“\n”+
“WebForm_RestoreSrollPosition();”+“\n”+
“}”+“\n”+
“var destination=$('#“+lblMessage.ClientID+”).offset().top;“+”\n”+
$('html,body')。动画({scrollTop:destination-20},500);“+”\n+
"});" +
"";
RegisterClientScriptBlock(this.GetType(),“scrollToMessage”,脚本);
好吧……我找到了一个很好的解决方法。我在制作动画之前调用WebForm_RestoreSrollPosition();(如果它是函数)。然后一切都会好起来。我将为问题添加代码,并在7小时内回答它。