2012-01-24 57 views
2

我有iframe出現如下頁面:的iFrame和Javascript角

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- 
transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> 
<script type="text/javascript"> 
    alert("test"); 
    elements = document.getElementById("reference").contentWindow.getElementLength(); 
    alert("test2"); 
</script> 
</head> 
<frameset cols="20%,*"> 
    <frameset rows="25%,*"> 
     <frame src="./groups.html" name="types"> 
     <frame src="./entities.jsp" name="entities"> 
    </frameset> 
    <frame src="./reference.jsp" name="reference" id="reference"> 
</frameset> 
</html> 

裏面reference.jsp,我有以下代碼:

<html> 
<head> 
    <script type="text/javascript"> 
     function getElementLength(){ 
      alert("in reference"); 
      elements=document.getElementByClassName("link"); 
      alert(elements.length); 
     } 
    </script> 
</head><body>...</body></html> 

我查了早些時候的StackOverflow有關跨幀使用Javascript職位,發現contentWindow做的伎倆,但在這種情況下,我只得到第一個警報 - 「測試」和ID =「參考」的框架永遠不會達到。我在Firebug中看到以下錯誤:

document.getElementById("reference") is null 
elements = document.getElement...").contentWindow.getElementLength(); 

有沒有我丟失的東西,這似乎是一個非常直接的用例。

+1

注:這些不是iFrame中...只是相框.... – ManseUK

回答

3

我覺得現在的問題是,加載幀之前您的腳本執行...

你可以做到以下幾點,以確保框架執行腳本之前加載:

<script type="text/javascript"> 
function load() { 
    alert("test"); 
    elements = document.getElementById("reference").contentWindow.getElementLength(); 
    alert("test2"); 
} 
</script> 

<frameset cols="20%,*"> 
    <frameset rows="25%,*"> 
     <frame src="./groups.html" name="types"> 
     <frame src="./entities.jsp" name="entities"> 
    </frameset> 
    <frame src="./reference.jsp" name="reference" id="reference" onload="load()"> 
</frameset> 

我在框架reference中添加了onload="load()"屬性,並將您的腳本封裝在load()函數中。這將導致代碼在加載reference框架後執行。

+1

我完全同意另一個小問題是在reference.jsp中'elements = document.getElementByClassName(「link」);'指令必須改爲'elements = document.getElementsByClassName(「link」);'(用s)檢索所有鏈接類。 – DEAD10CC

0

您的文檔類型爲過渡這是不支持framset 嘗試下面的文檔類型標籤

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">