2013-11-20 86 views
3

我的網站是設置這樣的:呼叫從框架javascript函數在其他框架

<frameset rows="80,*"> 
    <frame name="top" id="top" src="header.html"> 
    <frameset id="innerframe" cols="300,*"> 
     <frame name="nav" src="nav.html"> 
    </frameset> 
</frameset> 


header.html我:

function fAlert() { 
    alert('test'); 
} 

我如何可以調用nav.htmlfAlert()

我試圖

var fframe = parent.document.getElementById('top'); 
fframe.fAlert(); 

parent.frames.top.fAlert();

,但它沒有工作(fAlert is undefined)。

任何想法,我可以做到這一點?

回答

6

首先,不要使用框架和框架。使用iframe - 框架已被棄用。

其次,爲了正確引導函數調用,爲iframe(或框架,如果必須的話)提供一個id。 (你已經做了很多事情,但我很有條理。)我不會將它命名爲'top',因爲'top'在窗口和框架方面已經有了意義。

從導航框中,parent.insertYourFrameIdHere.fAlert()應該正常工作。這裏假設兩件事:1)頁面和框架內容來自同一個域,2)header.html正確加載,並且沒有腳本錯誤。腳本錯誤或其他問題可能導致功能無法創建。

+1

不幸的是,該網站已建立'framesets/frames',我無法改變這一點。我還想補充一點,'top'對於'frame'來說是個很不方便的名字。 'parent.frames [0] .fAlert()'做了竅門。 – seph

4

對於您的問題中的HTML應該工作。

window.parent.parent.frames[0].fAlert();