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仅在标准模式下,但在怪异模式下,它会在正常页面流中插入这样的对话框,导致页面的其余部分向下移动。
因此,如果您真的处于标准模式,我们应该仔细检查:
- Doctype声明必须是文档中绝对的第一件事(不得有任何评论或其上方的任何内容!)
- 我会用
测试,因为将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); }