正如您所提到的,IE模式对话框不像普通浏览器窗口那样工作。通过尝试各种方法,您可以对其工作原理进行逆向工程,并使用一些补偿技巧。您说过您可以控制HTML,可以使用Javascript,下面是我想到的。
<!DOCTYPE html PUBLIC“-//W3C//DTD XHTML 1.0过渡//EN”"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.DTD"><html><头部>布拉格2<style type='text/css'>正文{边距:20px;宽度:1px}#测试{背景:红色;高度:500px;}</style><脚本>window.onload=windowResized;window.onresize=windowResized;函数窗口Resized(){var cw=document.documentElement.clientWidth;var裕度=20;document.getElementById(“test”).style.width=(cw-2*margin)+“px”;}</script></头><body><div id=“test”><输入类型=“按钮”onclick=“javascript:window.showModalDialog('test.html',window,'dialogWidth:300px;resizable:yes;');”/>这里有点不合时宜。</div></body></html>
此代码的关键是调整<div>
包含内容的。通常,这个宽度是窗口的宽度(减去边距),但对于IE模式对话框,我们应该使用窗口宽度减去滚动条宽度。这是给我们的document.documentElement.client宽度
。我们在加载对话框时以及调整对话框大小时都会进行此调整。
主体的初始宽度(加载时,但在调整<div>
)似乎混淆了IE,所以我们将其设置为1个
。所以这是代码中的“幻数”var裕度=20;
,必须与CSS匹配边缘
。我还设置了div高度
到500像素
这样,当垂直滚动条打开或关闭时,更容易看到发生了什么。
我已经在IE6/7/8和Windows XP上的Chrome,以及Mac上的FF3.6和Chrome中测试过这一点。我已经使这里的代码尽可能简单,所以如果div公司
变得更复杂,希望您能够根据需要修改Javascript。希望这对你有用。