jQuery对话框:在将内容加载到iframe后设置大小

时间:2013-08-28 00:36:02

标签: javascript jquery jquery-ui

我在这里解决了一个谜。我有以下代码在jQuery对话框中将内容加载到iframe时调用。我想将对话框大小适当地设置为内容。用于设置对话框宽度和高度的前两行(注释)行有效,但后两行(未注释)行不起作用(显示的高度略小于应有的内容,内容垂直溢出,宽度正常)。即使两个断言都通过也是如此,这意味着无论我使用oO中的哪个版本,第三个参数都应该具有相同的值。有什么建议甚至可能吗?

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部分:(。

编辑:奇怪的是,如果我查看对话框元素,它有高度:auto;宽度:两种版本的样式均为677px。所以设置高度有问题。

1 个答案:

答案 0 :(得分:0)

所以事实是这会打印两个不同的高度。先543然后586

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

不确定原因,但至少现在这种行为是有意义的。