1

我正在构建一个内容是 iframe 的对话框。当对话框打开时,我从各种来源中提取了以下代码以尝试使其工作:

var iframeDOM = document.createElement("IFRAME"); 
iframeDOM.setAttribute("frameborder", "0"); 
iframeDOM.setAttribute("scrolling", plugin.settings.scrolling ? "" : "no"); 
iframeDOM.setAttribute("allowtransparency", isIE ? "true" : ""); 



var setDimensions = function(){
                        console.log("load");
                        var iframeWin = iframeDOM.contentWindow || iframeDOM.contentDocument.parentWindow;
                        if (iframeWin.document.body) {
                            console.log("new height: " + iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight); //Not giving real height, always 0
                            console.log("new client height: " + iframeWin.document.documentElement.clientHeight); 
                            iframeDOM.height = 550;
                            iframeDOM.width  = 550;
                        }

                    };

                    $(iframeDOM).load(setDimensions)
                                .appendTo($element.children().first())
                                .attr({ src: plugin.settings.href, name: new Date().getTime() });  

如您所见,我试图记录 iFrame 的高度,但它始终打印 0(作为临时解决方法,我正在静态设置尺寸)

编辑:我更新此 OP 的另一个解决方案返回错误:

 Error: Permission denied to access property 'document' if (iframeWin.document.body) {
4

2 回答 2

0

iframe 不会自动获取高度和宽度。您需要手动定义它,因此只能通过 javascript 捕获页面加载到 iframe 的实际高度并将其分配为 iframe 的高度。但这种方法会造成不稳定。

更新

使用 .height() 函数计算页面高度并将其分配给 iframe。它将以这种方式工作。

于 2013-09-12T13:31:10.493 回答
0

这是我发现效果很好的东西。我认为它需要调整,但我不擅长 JavaScript。

<script language="JavaScript">
<!--
function autoResize(id){
  var newheight;
  var newwidth;

if(document.getElementById){
    newheight=document.getElementById(id).contentWindow.document.body.scrollHeight;
    newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth;
}

document.getElementById(id).height= (newheight) + "px";
document.getElementById(id).width= (newwidth) + "px";
}
//-->
</script>

<iframe name="content" src="http://my-domain.com/home.html" width="100%" height="200px" id="iframe1" marginheight="0" frameborder="0" onLoad="autoResize('iframe1');">
</iframe>
于 2013-12-21T23:28:20.490 回答