У меня есть старое приложение для интрасети, которое должно показывать два фрейма (фиксированная строка меню и представление данных с переменным содержимым) внутри модального диалогового окна.На данный момент диалог открывается с помощью функции window.showModalDialog
и все работает нормально, пока я открываю страницу в Internet Explorer 8 (с любым режимом просмотра) или в Internet Explorer 9 с Совместимость View enabled.
К сожалению, при отключении представления совместимости в 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, приветствуются любые подсказки для решения этой проблемы.