我在这里解决了一个谜。我有以下代码在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。所以设置高度有问题。答案 0 :(得分:0)
所以事实是这会打印两个不同的高度。先543然后586
console.log(frameDoc.height());
$(boxElem).dialog('option', 'width', frameDoc.width());
console.log(frameDoc.height());
不确定原因,但至少现在这种行为是有意义的。