1

我正在使用 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 中非常常见的问题

谢谢你们!

4

1 回答 1

0

我知道这是一个老问题,但我面临同样的问题,这可能对其他人有用。

(首先,您应该在客户端创建一个函数并调用它,而不是用您的代码实例化一个字符串变量。您会发现它更易于维护。)

因此,为了使您的对话框不会滚动到顶部,只需调用:

WebForm_RestoreScrollPosition();

在打开 jquery 对话框之前。

于 2014-05-06T14:51:14.837 回答