2012-12-18 34 views
1
<iframe id="frame1" name="frame1" width="200" height="600" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://localhost/Widget/"></iframe> 

我想從頁面http://localhost/Widget/使用JavaScript查找此iframe的高度。如何從源頭獲取iframe的高度

有沒有辦法做到這一點?提前致謝。

+0

不安全的JavaScript的嘗試,如果IFRAME違反同一產地 –

+0

可能重複[調整iframe的寬度高度,以適應有內容](http://stackoverflow.com/問題/ 819416 /調整寬度高度的的iframe到嵌合用內容功能於它) –

回答

0
$('#frame1').attr('height'); 

使用jQuery。或

document.getElementbyId('frame1').getAttribute('height'); 

與普通的js。

1

您必須首先獲得「父母」才能這樣做。您可以通過document.parent獲取父,所以下面應該工作(未測試):

parent.getElementById('frame1').getAttribute('height'); 

如果您在父加載了jQuery,你可能會使用:

parent.jQuery('#frame1').attr('height'); 

編輯 :但請注意,這裏有一個安全限制:兩個頁面必須位於相同的域中才能使用。

2

我去一個不同的方式對我自己的解決方案的問題: 內的iframe我:

<body onload="parent.setsize(document.body.scrollHeight);"> 

在父我有一個js函數:

function setsize(pixels){ 
if(navigator.appName=="Microsoft Internet Explorer") pixels+=40; 
if (navigator.userAgent.indexOf("Firefox")!=-1) pixels+=40; 
document.getElementById('produktet').style.height=pixels+"px"; 

,你可以請參閱iframe內容的總高度爲:document.body.scrollHeight

1

繞過交叉原點問題。您可以在體內加載之前讀出的高度:

<html> 
    <head> 
    <script> 
     var iframeSize = Math.max(document.documentElement.clientHeight, 
            document.documentElement.scrollHeight, 
            document.documentElement.offsetHeight); 
    </script> 
    </head> 
<body> 
    ...