2013-08-28 3 views
0

Я решаю вид тайны здесь. У меня есть следующий код, который вызывается, когда содержимое загружается в iframe в диалоговом окне jQuery. Я хочу установить размер диалогового окна соответствующим образом. Первые две (прокомментированные) строки для установки ширины и высоты диалогового окна работают, но второй (некомментированные) строки не работают (отображаемая высота немного меньше, чем должна быть, а содержимое переполняется вертикально, ширина - в порядке). И это правда, даже если оба утверждения проходят, а это означает, что третьи аргументы должны иметь одинаковые значения независимо от того, какая версия из двух я использую oO. Любые предложения, как это может быть даже возможно?Диалог jQuery: размер параметра после загрузки содержимого в его iframe

frameElem.load(function() { 
    frameDoc = frameElem.contents(); 
    var boxWidth = Math.min($(window).width(), frameDoc.width()); 
    var boxHeight = Math.min($(window).height(), frameDoc.height()); 
    console.assert(boxWidth == frameDoc.width()); 
    console.assert(boxHeight == frameDoc.height()); 

    //works correctly: 
    //$(boxElem).dialog('option', 'width', frameDoc.width()); 
    //$(boxElem).dialog('option', 'height', frameDoc.height()); 

    //does not work 
    $(boxElem).dialog('option', 'width', boxWidth); 
    $(boxElem).dialog('option', 'height', boxHeight); 

    $(boxElem).dialog('option', 'position', 'center'); 
    $(boxElem).dialog('open'); 
}); 

я пыталась jsfiddle, но не смог сделать IFrame часть :(

EDIT: Странно то, что если я смотрю на элемент диалогового окна, она имеет высоту:. Авто и ширина: 677px в стиле в обеих версиях. Таким образом, есть что-то не так с настройкой высоты.

ответ

0

Так дело в том, что это печатает две разные высоты. Сначала 543, а затем 586

console.log(frameDoc.height()); 
    $(boxElem).dialog('option', 'width', frameDoc.width()); 
    console.log(frameDoc.height()); 

Не Конечно, почему именно, но по крайней мере поведение имеет смысл сейчас.

Смежные вопросы