iFrame в диалоговом окне пользовательского интерфейса jQuery вызывает горизонтальную полосу прокрутки на родительском
Я использую диалоговое окно jQuery UI для представления контента в новом iFrame. Все работает отлично, за исключением того, что родительское окно диалога получает горизонтальную полосу прокрутки во время отображения диалога (IE8). Я отследил проблему до элемента в iFrame, который браузер интерпретировал как очень широкий, хотя единственный контент на странице в iFrame в 580px div.
Я пытался добавить CSS в теги HTML и BODY в iFrame (например, width: 98% или width: 600px;)... ни один из них, похоже, не оказывает никакого влияния.
Код для открытия диалога приведен ниже. Какие-либо предложения?
$("a[providerId]").click(function(e) {
e.preventDefault();
var $this = $(this);
var $width = 600;
var $height = 400;
$('<iframe id="companyDetail" class="companyDetail" style="padding: 0px;" src="' + this.href + '" />').dialog({
title: $this.attr('title'),
autoOpen: true,
width: $width,
height: $height,
modal: true,
resizable: false,
autoResize: true,
overlay: {
opacity: 0.5,
background: "black"
}
}).width($width).height($height);
});
ОБНОВЛЕНИЕ: посмотрите эти демонстрации, где я получил код, чтобы увидеть, о чем я говорю (в IE8): http://elijahmanor.com/demos/jqueryuidialogiframe/index.html
4 ответа
Кажется, это небольшая ошибка в jQuery UI 1.7.2, и в настоящее время существует открытый билет (#3623) по этому вопросу. В комментариях к заявке предлагаются два решения:
Решение А
Изменить jquery-ui-1.7.2.custom.css:
- найти
.ui-widget-overlay
, - Добавьте следующее правило:
position:fixed;
,
Решение Б
Модифицируйте jquery-ui-1.7.2.custom.min.js:
- найти
addClass("ui-widget-overlay").css({width:this.width(),height:this.height()});
на линии 97. - удалять
.css({width:this.width(),height:this.height()})
,
Моя первая мысль была overflow-x : hidden
и в моем случае в IE8 в стандартном режиме, а также в режиме причуд это делает трюк, горизонтальная полоса исчезает. Все, что вам нужно, это положить его на теле тега.
У меня такая же проблема. В моем случае это дочерний элемент body, и я использовал следующий скрипт для предотвращения переполнения:
$("#your-dialog").dialog({
//our options,
open: function(){
$("body").css("overflow", "hidden");
},
close: function(){
$("body").css("overflow", "initial");
}
});
- Если это происходит только при отображении модального интерфейса, проверьте CSS, управляющий div, отвечающим за наложение.
- Проверьте также ваш doctype.
- Вы пытались играть с
overflow:hidden
?
Размещение URL-адреса на демо-версию проблемы поможет.