Как вы упоминаете, модальное диалоговое окно IE не совсем работает как обычное окно браузера. Пробуя разные вещи, вы можете как-то перепроектировать, как это работает, и использовать некоторые компенсирующие приемы. Вы заявили, что у вас есть контроль над HTML, что можно использовать Javascript, так что вот что я придумал.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Blarg 2</title>
<style type='text/css'>
body { margin: 20px; width:1px}
#test { background: red; height: 500px; }
</style>
<script>
window.onload=windowResized;
window.onresize=windowResized;
function windowResized()
{
var cw = document.documentElement.clientWidth ;
var margin = 20 ;
document.getElementById("test").style.width=(cw-2*margin)+"px" ;
}
</script>
</head>
<body>
<div id="test" >
<input type='button'
onclick="javascript:window.showModalDialog('test.html', window, 'dialogWidth: 300px; resizable: yes;');" />
There is a bit more than meets the eye here.
</div>
</body>
</html>
Суть этого кода заключается в изменении ширины <div>
, содержащей содержимое. Обычно эта ширина будет шириной окна (меньше полей), но в случае модального диалога IE, мы должны использовать ширину окна меньше ширины полосы прокрутки. Это дано нам document.documentElement.clientWidth
. Мы делаем это изменяя размер, когда диалог загружается и всякий раз, когда он изменяется.
Начальная ширина тела (при загрузке, но до изменения размера <div>
), похоже, сбивает с толку IE, поэтому мы установили ее на 1px
. Так что это «магическое число» в коде, как и var margin = 20 ;
, которое должно соответствовать CSS margin
. Я также установил div height
на 500px
, чтобы было легче видеть, что происходит, когда вертикальная полоса прокрутки включена или выключена.
Я проверял это в IE6 / 7/8 и Chrome на Windows XP, а также FF3.6 и Chrome на Mac. Я сделал код здесь максимально простым, поэтому, если содержание вашего div
станет более сложным, надеюсь, вы сможете изменить Javascript по мере необходимости. Надеюсь, что это работает для вас.