我正在使用新的jQuery 1.3.2和jQuery-ui-1.7库以及UI对话框.我有一个div标签,里面有几个表单元素(文本框,复选框等).在页面加载时,jQuery将div显示为对话框.这在FF中工作得非常好,但在IE中,div的高度是错误的.它只是显示标题栏的一些内容.我在创建div时明确设置了高度.如果在打开对话框后设置高度选项,则会更正高度,但内容为空(显示文本框的前三分之一).如果我允许对话框可调整大小,如果你在IE中调整它的大小它工作正常,但我不想强迫IE用户调整大小只是为了看到内容.有任何想法吗?这是我用来创建对话框的代码:
$('#dialogDiv').dialog({ bgiframe: true, height: 400, width: 620, modal: true, draggable: true, resizable: false, close: function(event, ui) { if($('#agree').val() != '1') location.href = 'somepage.html'; } });
Monte Chan.. 30
在做了一些Google搜索后,我找到了问题的真实答案.它是由不兼容的Doctype引起的.有关更多信息,请访问http://osdir.com/ml/jquery-ui/2009-08/msg00388.html.
我在我的代码上试了一下,这个URL中的解决方案可以解决问题.
在做了一些Google搜索后,我找到了问题的真实答案.它是由不兼容的Doctype引起的.有关更多信息,请访问http://osdir.com/ml/jquery-ui/2009-08/msg00388.html.
我在我的代码上试了一下,这个URL中的解决方案可以解决问题.
我在IE7中遇到了同样的问题,并深入研究了症状和解决方案.我注意到当我创建一个没有内容的虚拟对话框时,高度正确呈现.因此,我开始玩各种类型的内容,看看我是否可以用不同的方式编写内容来克服这个问题.没运气.然而,我发现,我添加的内容越多,IE7中的对话框就越短(甚至隐藏的项目也会缩短一点).因此,简单的内容可能不会产生太大的影响(因此,在这个问题上缺乏更多的投诉).我正在添加的表和许多表单项创建了非常明显的效果.
将高度设置为auto可以很好地工作但是IE7仍然错误地计算了我的内容的高度大约10个像素太短(可能是对象上的填充高度),因此jQuery添加了滚动条.不完美,但接受以下内容可接受.
由于未能找到另一种解决方法,我开始研究DOCTYPE解决方案.我发现我们网站的DOCTYPE - 尽管它看起来是正确的 - 它实际上将所有浏览器都置于"Quirks模式"中,这是问题的真正来源.我怀疑jQuery支持怪癖模式问题所以我怀疑这将永远修复.
我目前的DOCTYPE:
应该是什么:
即使这个较旧的DOCTYPE工作:
因此,不是DOCTYPE必须是HTML 5的值,它必须是有效的DOCTYPE(HTML 4或5 - 不确定XHTML)才能将IE7设置为除quirks模式之外的其他东西(Firefox工作原理)好的,无论哪种方式).看到:
http://en.wikipedia.org/wiki/Quirks_mode#Comparison_of_document_types
我没有选择更改我们网站的DOCTYPE所以我必须使用其他解决方案,如自动高度.我注意到在使用jQuery Dialog时怪癖和标准模式之间还存在其他差异所以我也必须处理它们(即,在IE7和Firefox中,字体大小百分比的累积方式不同).