Javascript 子窗口调用父窗口js方法

JavaScript017

Javascript 子窗口调用父窗口js方法,第1张

 JS子窗口调用父窗口的方法:

 框架(iframe)形式,这时用到是window.parent, window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本身。可以用这一点特性来判断这个窗口是否是顶层窗口。详情如下:

1、1.html代表的是父窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

<html xmlns="

<head>

<meta http-equiv="Content-Type" content="text/html charset=utf-8" />

<title>父页面</title>

</head>

<body>

<form name="form1" id="form1"> 

   <input type="text" name="username" id="username" /> 

</form> 

<iframe src="2.html" width="100%">

</body>

</html

2、2.html代表的子窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

<html xmlns="

<head>

<meta http-equiv="Content-Type" content="text/html charset=utf-8" />

<title>子页面</title>

<script type="text/javascript">

 function changeValue(val){

  var _parentWin = window.parent   

  _parentWin.form1.username.value = val 

 }

</script>

</head>

<body>

<input type="file" name="filename" onchange="changeValue(this.value)" />

</body>

</html>

这时在子窗口(iframe窗口)所做的改变,会改变父窗口中username的值。

iframe里面的页面调用父窗口,左右窗口js函数的方法

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法。

比如有A窗口,A内有个IFRAME B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数AFUN()

那么只要在C页面中写如下JS函数就可以了:

window.parent.AFUN()

如果AFUN()有参数也可以直接传递合适的参数进去。

例如:

修改父窗口控件属性

window.parent.document.getElementById('frmright').src=window.parent.document.getElementById('frmrightsrc').value

调用父窗口函数

window.parent.POPUP('bigFram')

父窗口调用iframe子窗口方法

<iframe name="myFrame" src="child.html"></iframe>

myFrame.window.functionName()

iframe子窗口调用父窗口方法

parent.functionName()

////////////////////////////////////

用js互相调用iframe页面内的js函数

一个html页面,分成左右两块,左边为导航栏,右边为需要显示的内容,代码如下:

左栏的代码为:

<IFRAME frameBorder=0 id=frmTitleLeft name=framLeft src="left.html" style="HEIGHT: 100%width:180px">

连接到left.html

比如右栏中有一个函数right(),我要在左栏的链接中调用right()函数,该如何实现呢

1,首先leftframe是内嵌在容器页index.html中的,因此需要先返回到index这一级别,并取得rightframe对象

var frames=window.parent.window.document.getElementById("frameid")

2,要能执行其页面中的函数,必须要获得window对象,这里有一个重要的对象contentWindow,获得这个对象,即可执行其中的函数了,如

frames.contentWindow.right()

以上代码兼容IE6,Firefox3,chrome2.0,均成功通过测试,IE7没试过,不过应该没问题。

3.例如:

window.parent.document.getElementById('leftFrame').contentWindow.JSMenu('MenuUl'+Sid)

window.parent.frames["leftFrame"].JSMenu('MenuUl'+Sid)

////////////////////////////////////////

还有下面一种,没测试过

并不是象通常那样iframeName.test()——test()为iframe里的方法。因为要写一个通用一点的东西,所以是从一个配置文件中动态获取到iframe的id。然后调用里面的方法。可是不成功。相烦帮忙看一看。代码如下:

<iframe id="iframe1"></iframe>

var cs = document.all

for(var i = 0 i < cs.length i++) {

if(cs.tagName.toUpperCase() == "IFRAME") {

if(cs.id == "iframe1") {

alert(frmDealData)

alert(cs)

document.frames.iframe1.setScreenletStatus(iframeLayoutLvl)

document.frames.cs.setScreenletStatus(iframeLayoutLvl)

}

}

}

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法。

比如有A窗口,A内有个IFRAME.

B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数ExpandPage()

那么只要在C页面中写如下JS函数就可以了:

window.parent.ExpandPage()

如果ExpandPage()有参数也可以直接传递合适的参数进去。