Jquery UI对话框 – 打开时IE7浏览器立即移动到页面底部

我一直在研究一个新的.net MVC网站,并集成了一些非常棒的jquery UI组件。

我一直在IE8,FF,歌剧和Chrome中测试它,一切看起来都很好。 一旦我在IE7中测试,令人惊讶的是它的对话框导致了问题。

基本上发生的事情是,用户点击打开对话框,页面将立即滚动到页面底部。 如果页面很长,这尤其糟糕。

这只发生在IE7(可能是6但我甚至不去那里!)。

我花了几个小时阅读论坛,似乎我不是唯一一个。

我创建了一个肮脏的黑客,我不热衷但它确实有效。

onclick="SignIn();  return false;"> 

有没有其他人有这个问题并解决它而不诉诸肮脏的黑客?

即时通讯使用jquery-ui-1.8.custom.min.js和jquery-1.4.2.min.js

任何帮助都非常感谢

Truegilly

更新—

你好,谢谢你的回应 –

在我的页面顶部,我有这个声明……

  

我包括这些文件….

    

这是我的登录function – 其他对话框非常相似

 // Sign in to the site function SignIn() { $("#SignIn").dialog({ bgiframe: true, modal: true, resizable: false, buttons: { 'Sign In': function () { // the username and password var Username = $("#Username").val(); var Password = $("#Password").val(); var dataString = 'Username=' + Username + '&Password=' + Password; // AJAX here.... // when the user clicks sign in, the form is submitted //$("#SignInForm").submit(); }, Cancel: function () { $(this).dialog('close'); } } }); } 

正如我所说,它在除IE7之外的所有浏览器中都能正常工作

我已经解决了它删除html代码中的逗号:

照顾宽度:715

之前:

 $(function(){ // Dialog $('#dialog').dialog({ autoOpen: false, width: 715,}); 

后:

 $(function(){ // Dialog $('#dialog').dialog({ autoOpen: false, width: 715 }); 

IE7在有逗号的行中报告了一个错误。

我在IE7上遇到了同样的问题,并且使用了最新版本的jquery并且没有任何流浪逗号。

修复结果很简单 – 对CSS的简单补充。 添加.ui-dialog{ position: absolute; overflow:hidden } .ui-dialog{ position: absolute; overflow:hidden }在IE7中修复它。

对话框是否使用position: fixed ? IE7仅在标准模式下,但在怪异模式下,它会在正常页面流中插入这样的对话框,导致页面的其余部分向下移动。

因此,如果您真的处于标准模式,我们应该仔细检查:

  1. Doctype声明必须是文档中绝对的第一件事(不得有任何评论或其上方的任何内容!)
  2. 我会用测试,因为将IE7(以及所有现代浏览器)置于标准模式下效果非常好,而且输入错误更加困难。

我将.ui-dialog的jquery-ui.css类从相对位置更改为绝对位置。 测试了IE 7,8,9,Chrome 14.0.835.163 beta-m,Safari 5.1,FireFox 3.6.16

我以前遇到过这个问题,但这只是因为我没有包含jQuery UI CSS。 而且,老实说,这听起来像是一个CSS问题。

你是如何制作对话框的? 我看到了“SignIn”function,但它包含了什么? (顺便说一句,您可以在.dialog()方法中手动设置对话框的位置……不确定这是否会对您有所帮助)

此外,请确保您的浏览器符合标准模式。 如果您处于Quirks模式,则可能会对应用的任何样式产生影响。 如果您不知道如何执行此操作,则至少需要声明DOCTYPE。 类似顶部HTML。

我有这个问题但是当我升级到jquery 1.4.4和jqueryui 1.8.7时它就消失了

没有一个CSS技巧对我有用。

我是如何修理它的:

HTML

 ... 

使用Javascript

 function openDialogFunction(parameters) { var topOff = $(window).scrollTop(); //code to open the dialog $(window).scrollTop(topOff); }