Я столкнулся с той же проблемой в IE7 и более глубоко изучил симптомы и решение. Я заметил, что когда я создал фиктивный диалог без содержимого, высота отображается правильно. Таким образом, я начал играть с различными типами контента, чтобы посмотреть, смогу ли я написать контент по-другому, чтобы преодолеть проблему. Неудачно. Однако я обнаружил, что чем больше контента я добавлял, тем короче диалог становился только в IE7 (даже скрытые элементы немного его укорачивали). Таким образом, простой контент, скорее всего, не будет иметь заметного эффекта (и, следовательно, отсутствия дополнительных жалоб по этому вопросу). Таблица и многие элементы формы, которые я добавлял, создают очень заметный эффект.
Установка высоты на авто работает несколько хорошо, но IE7 все еще неправильно высчитывает высоту моего контента примерно на 10 пикселей слишком коротко (возможно, высота отступа для объекта), и, таким образом, jQuery добавляет полосу прокрутки. Не идеально, но приемлемо, учитывая следующее.
Не найдя другого обходного пути, я начал искать решение DOCTYPE. Я обнаружил, что DOCTYPE нашего сайта - хотя он выглядит правильно - он фактически переводит все браузеры в «Режим причуд», и это является истинным источником проблемы. Я сомневаюсь, что jQuery поддерживает проблемы режима причуд, поэтому я сомневаюсь, что это когда-нибудь будет исправлено.
Мой текущий DOCTYPE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Что должно быть:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Даже этот старый DOCTYPE работал:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/transitional.dtd">
Таким образом, дело не в том, что DOCTYPE должен быть значением HTML 5 <!DOCTYPE html>
, а в том, что он должен быть действительным DOCTYPE (HTML 4 или 5 - не уверен насчет XHTML), который установит IE7 в другое значение чем режим причуд (Firefox работает нормально в любом случае). Смотрите:
http://en.wikipedia.org/wiki/Quirks_mode#Comparison_of_document_types
У меня нет возможности изменить DOCTYPE нашего сайта, поэтому мне нужно использовать другое решение, например, автоматическую высоту. Я заметил, что при использовании jQuery Dialog есть и другие различия между режимами причуд и стандартами, поэтому мне приходится иметь дело и с ними (а именно, процентное соотношение размера шрифта накапливается по-разному как в IE7, так и в Firefox).