Internet Explorer 9 игнорира dialogWidth/Height за showModalDialog с набор от рамки

Имам по-старо интранет приложение, което трябва да показва два кадъра (фиксирана лента с менюта и изглед на данни с променливо съдържание) в модален диалогов прозорец. В момента диалоговият прозорец се отваря с помощта на функцията 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, всякакви съвети за разрешаване този проблем е добре дошъл.


person Daniel Calliess    schedule 30.01.2012    source източник


Отговори (3)


Същият проблем, с който се сблъсках, най-накрая проработи за мен чрез промяна на съвместимостта на мета таговете на ie8.

Премахнете всички тези doctype в диалоговия прозорец на модела и просто добавете мета етикет като

" meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8 "

надявам се това да помогне

person user2406101    schedule 25.08.2014
comment
Този проблем се появи наскоро в IE11. Моят диалогов прозорец нямаше doctype, така че не можах да използвам решението на D.Calliess. Вашите решения проработиха на IE11! - person Keorl; 14.08.2015

Също така обсъдих проблема на Форум за уеб разработка на Internet Explorer и успях да получа решение, което искам да споделя тук:

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

За IE9 проблемът може да бъде заобиколен чрез премахване на декларацията на doctype в dialog.html. Това принуждава тази конкретна страница в режим Quirks, но след това диалоговият прозорец отново се показва в правилния размер.

person Daniel Calliess    schedule 13.02.2012

Добавете този код към dialog.html

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