2011-05-10 67 views
10

我正在開發基於和標記的accient項目。如何調用子項中指定的javascript函數<frame>

這裏的父頁面(的index.html)的普通的HTML結構:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="en"> 
<head> 
</head> 
<frameset rows="75px,*" frameborder="0"> 
    <frame name="frame1" src="frames/frame1.html"> 
    <frameset class="child_frameset"> 
     <frame name="frame3" src="frames/frame3.html"> 
    </frameset> 
</frameset> 
</html> 

在這裏,我怎麼指定子幀上的javascript函數(frame3.html):

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <script type="text/javascript"> 
     function helloWorld(){ 
      alert('hello world!'); 
     } 
    </script> 
</head> 
<body> 
    <h1>I'm frame 3</h1> 
</body> 
</html> 

我的任務是致電helloWorld()函數。我怎麼做?
在此先感謝!

+0

正嘗試從父級調用函數? – Ibu 2011-05-10 07:34:27

+0

是的!我試圖從父頁面調用** helloWorld()**函數(index.html) – LoomyBear 2011-05-10 08:14:07

回答

20

你可以這樣說:

document.getElementById('frame3').contentWindow.helloWorld(); 
+0

+1儘管給框架ID首先可能是一個好主意。 – lonesomeday 2011-05-10 07:41:43

+2

該示例中的框架沒有ID,所以'getElementById'不太合適。只需使用'window.frames [「frame3」]。helloWorld()'來代替。 – RoToRa 2011-05-10 07:43:45

+0

Thanx爲最快的答覆...我試過所有這一切,但螢火蟲控制檯返回我** window.frames.frame3是未定義**和** document.getElementById(「frame3」)爲空**(請注意我給了框架ID =「frame3」)...任何想法爲什麼? – LoomyBear 2011-05-10 08:11:12

1

檢查contentWindow,contentDocument並得到框對象並進行通話。

var siblingFrame; 
if (parent.document.getElementById('siblingFrameId').contentWindow){ 
    siblingFrame = parent.document.getElementById('siblingFrameId').contentWindow; 
} else if (parent.document.getElementById('siblingFrameId').contentDocument){ 
    siblingFrame = parent.document.getElementById('siblingFrameId').contentDocument; 
} else if (parent.document.getElementById('siblingFrameId')) { 
    siblingFrame = parent.document.getElementById('siblingFrameId'); 
} 

siblingFrame.helloWorld(); 
1

您可以從childframe調用方法

window.frames[n].frames[m].methodName() 

,其中n,m是0。如果開始你的文檔 只有一個幀刪除幀[M]部分,把工作做好整數。

雅又一件事,做一個錯誤試驗,找出確切幀號 和方法。 希望這可以幫助

相關問題