2014-05-09 191 views
2

實際上,我無法根據給定的網址設置動態高度。那時我正在使用下面的代碼。如何在給定網址高度的基礎上設置iframe高度

<iframe id="myframe" src="http://example.com" scrolling="yes" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" style="overflow:auto; width:100%; height: 100%;"></iframe> 

如果可能,請給我建議任何解決方案。

+0

你不能根據動態URL設置高度。 –

+0

您可以在iframe內容加載上進行設置。看到我的答案[這裏](http://stackoverflow.com/questions/23557933/how-to-set-iframe-height-on-the-bases-of-the-given-url-height/23558028#23558028) –

回答

1

你可以通過獲取iframe的大小來做到這一點,並做出相應的調整;

<script type="text/javascript"> 
    function resizeIframe() { 
     var iframe = document.getElementById('myframe'); 
     if(iframe) { 
      iframe.height = iframe.contentWindow.document.body.scrollHeight + "px"; 
      iframe.width = iframe.contentWindow.document.body.scrollWidth + "px"; 
     } 
    } 
</script> 

而在你的框架;

<iframe id="myframe" src="http://example.com" scrolling="yes" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" onload="resizeIframe()"></iframe> 

更新:跨域

如果加載iframe網址是不是您的域名不同,你會得到權限錯誤由於CORS。您需要爲您的域名授予iframe域名的許可權。說吧;

的iframe域:http://example.com

您的域名:http://yourdomain.com

iframe中域,阿帕奇的conf,你需要設置裏面頭<Directory><Location><Files><VirtualHost>;

Header always append Access-Control-Allow-Origin: "example.com" 

如果域名不是您的,您可以使用iframe-resizer。簡單地說,添加這個庫並運行;

iFrameResize(); 
+0

我得到「權限被拒絕\t錯誤」for iframe.contentWindow –

+0

@ManishGupta您正在加載來自不同域的iframe?如果它是不同的域,您應該爲您的域授予加載的iframe域的權限。如果'http:// example.com'是你的,你可以給該域名的權限 –

+0

是的,我知道這是原因。 但是有什麼辦法可以調用crossdomain url,然後設置它的身高體重。 –