У меня есть старое приложение для интрасети, которое должно отображать два фрейма (фиксированную строку меню и представление данных с переменным содержимым) внутри модального диалогового окна. На данный момент диалог открывается с помощью функции window.showModalDialog
, и все работает нормально, пока я открываю страницу в Internet Explorer 8 (с любым режимом просмотра) или в Internet Explorer 9 с Просмотром в режиме совместимости включено.
К сожалению, при отключении Просмотра в режиме совместимости в IE9 диалоговое окно всегда открывается с размером 266 x 138 пикселей, независимо от указанных значений dialogWidth и dialogHeight. Я создал небольшой пример, показывающий проблему:
index.html (первоначально загруженная страница):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<input type="button" value="popup"
onclick="showModalDialog ('dialog.html', null, 'dialogWidth:500px;dialogHeight:400px;resizable:yes')" />
</body>
</html>
dialog.html (страница, открытая внутри диалогового окна):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<frameset rows="*, 70">
<frame src="frame1.html" />
<frame src="frame2.html" />
</frameset>
</html>
frame1.html/frame2.html (содержимое обоих фреймов):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>
<p>Frame Content</p>
</body>
</html>
Проблема возникает только в том случае, если я показываю документ с набором фреймов внутри диалогового окна. При открытии обычного html-документа (содержащего тело с некоторым содержимым) размер устанавливается таким, как указано в вызове функции.
Кроме того, изменение размера диалогового окна после загрузки документа работает только для обычных документов, а не для наборов фреймов, т.е. вставьте следующий код после открывающего HTML-тега в dialog.html:
<head>
<script type="text/javascript" />
window.setTimeout (function () { window.dialogWidth = "500px"; window.dialogHeight = "400px"; }, 10000);
</script>
</head>
Поскольку я не хочу менять общую структуру приложения (особенно фрейм-ориентированность) и не знаю, делаю ли я что-то не так или нашел ошибку в Internet Explorer, какие-либо подсказки по устранению эта проблема приветствуется.