我正在使用asp.net和ajax进行开发。
我遇到了jQuery和滚动的问题。
从c#使用以下代码在回发后显示jQuery对话框
script += "$(document).ready(function () {";
script += "$('#dialog').dialog({";
script +=" autoOpen: true,";
script += " show: {effect: 'fade', duration: 2000},";
script +=" hide: {effect: 'fade', duration: 500},";
script +=" modal: true,";
script +=" resizable: false,";
script +=" open: function(event, ui) {";
script +=" setTimeout(function(){";
script +=" $('#dialog').dialog('close'); ";
script +=" }, 8000);";
script +=" }";
script +=" }); ";
script += "setTimeout(function() {window.location.href = \"http://localhost:7713/xxxx/xxxx.aspx\";}, 9000);";
script += "});";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showMessage", script, true);
如果我有MaintainScrollPositionOnPostback =“false”,则代码表现良好。但如果我有MaintainScrollPositionOnPostback =“true”则显示jquery Dialog FIRST,然后设置滚动以使对话框位于页面顶部。
任何解决方案?
谢谢!
修改
我在以下代码中找到了解决方案:
. ui-dialog {margin: 0 auto; position: fixed;}
另一种替代解决方案是:http://www.cleancode.co.nz/blog/240/jquery-dialog-position-problem-web-form-postback
这是ASP.NET中非常常见的问题
谢谢大家!
答案 0 :(得分:0)
我知道这是一个老问题,但我面临同样的问题,这可能对其他人有用。
(首先,您应该在客户端创建一个函数并调用它,而不是使用您的代码设置字符串变量。您会发现它更容易维护。)
因此,为了让您的对话框无法滚动到顶部,只需调用:
WebForm_RestoreScrollPosition();
在打开jquery对话框之前。