2013-11-20 67 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();