Internet Explorer 9 игнорирует dialogWidth / Height для showModalDialog с набором кадров - PullRequest
0 голосов
/ 30 января 2012

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

Ответы [ 3 ]

2 голосов
/ 25 августа 2014

С той же проблемой я столкнулся, в конце концов, у меня получилось изменить совместимость метатега на ie8.

Удалите все эти типы документов в диалоговом окне модели и просто добавьте метатег, например,

"& nlt; meta http-экв =" X-UA-совместимый "контент =" IE = EmulateIE8 & ngt; "

Надеюсь, это поможет.

1 голос
/ 13 февраля 2012

Я также обсуждал эту проблему на форуме веб-разработчиков Internet Explorer и смог получить решение, которым я хочу поделиться здесь:

Согласно Microsoft Connect, Тестированиеудалось проверить, что эта проблема была решена в Internet Explorer 10 на Windows 8 Developer .

. Для IE9 проблему можно обойти, удалив объявление doctype внутри dialog.html .Это переводит эту конкретную страницу в режим Quirks, но затем диалоговое окно снова отображается в нужном размере.

0 голосов
/ 10 сентября 2014

Добавьте этот код в dialog.html

<head>
    <script>
    (function () {
        var _b = document.createElement('body');
        var _doc = document.documentElement;
        _doc.insertBefore(_b, _doc.firstChild );
        _doc.removeChild(_b);
    })();
    </script>
</head>
...