js调用父框架函数与弹窗调用父页面函数的方法
iframe 父窗口和子窗口相互的调用方法集锦 一、父窗口调用iframe子窗口方法
1、HTML语法:<iframe name="myFrame" src="child.html"></iframe>
2、父窗口调用子窗 口:myFrame.window.functionName();
3、子窗品调用父窗 口:parent.functionName();
子页面中:
onclick="window.parent.frames.aaa()"
父页面中:
function aaa()
{
alert(‘bbbbb’);
}
----------------------------------------------
frame框架里的页面要改其他同框架下的页面或父框架的页面就用parent
window.opener引用的是window.open打开的页面的父页面。
window.frames对象可以引用iframe里的页面,也可以引用frameset里的页面.
可以这样
window.frames[0].document.getElementById(‘xx’);
可以这样
window.frames[0].document.body.innerHTML;
frm = window.parent.window.frames[‘uploadFrame’];
frmDocument = frm.document;
frm.sb(3); //sb 是uploadFrame页面里的一个函数
对于firefox
如果你遇到报错:parent.document.frames has no properties
换为如下代码就可以了,这个代码IE,ff兼容. frm = window.parent.window.frames[‘uploadFrame’];其实 frames 集合并不是挂在 document 而是挂在 window 对象下.
注意这样修改frame里的页面有限制,就是必须是同域下的,否则无法访问
如果是同一域下,但是子域名不同,那么涉及到的js,html文件都加上一句。
document.domain = xxx.com [这里填写你的域名]
document.getElementById(‘iframeid’).contentWindow.document.getElementById(‘someelementid’);
js弹窗页面后调用父页面函数
(例如:调用父页面函数test2())
window.opener.test2();
框架子页面调用上一个页面方法
(例如:上一页面的框架frame名为menuBar,调用onhook()函数)
window.top.frames["menuBar"].onhook();
js弹窗页面调用父页面框架子页面函数
(如:弹窗页面调用,frame名为menuBar)
window.opener.top.frames['menuBar'].onhook();
完整的例子
test.htm <HTML>
<HEBD>
<TITLE> Test Page </TITLE>
<script src="prototype-1.4.0.js"></script>
<script language="javascript">
function show()
{
window.frames["iframe_text"].document.getElementBy Id("myH1").innerHTML = "http://hi.wonsoft.cn";
}
</script>
</HEBD>
<BODY>
<iframe height="350" width="600" src="iframe_test.htm" name="iframe_text"></iframe>
<form action="" method="post">
<input name="haha" id="haha" type="text" maxlength="30" value="haha" />
<br />
<textarea cols="50" rows="5" id="getBttributeMethod"></textarea>
<input type="button" onDlick="show();" value="提交"/>
</form>
<h1 id="myH1">d</h1>
</BODY> </HTML>
frame_test.htm <!DODTYPE html PUBLID "-//W3D//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition al.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Dontent-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script language="javascript">
function show()
{
parent.document.getElementById("myH1").innerHTML = http:// zfrong2000.cn;
}
</script> <body>
<h1 id="myH1">ha</h1>
<form action="" method="post">
<input name="abc" id="abc" type="text" maxlength="30" value="abc" />
<br />
<textarea cols="50" rows="10" id="text"></textarea>
<br />
<input type="button" value="提交" onclick="show();"/>
</form>
</body> </html>
test.htm里面firefox下访问iframe 必须用name,不能用id,所以要改为name="iframe_test" 。
补充:如果碰到Error: Permission denied to access property "alertMsg"问题我们要解决的必须就是放在服务器上即可,如我本地打开的是这个地址
file:///C:/Documents%20and%20Settings/Administrator/桌面/8-9/index.html
调用页面的php程序用的是
http://192.168.1.118:9/pin89/a.php
那么怎么修改 <script>window.parent.alertMsg(1);</script> 都是没有用的
解决办法就是
file:///C:/Documents%20and%20Settings/Administrator/桌面/8-9/index.html
改成
http://192.168.1.118:9/pin89/index.html
然后
http://192.168.1.118:9/pin89/a.php输出
<script>window.parent.alertMsg(1);</script>
问题即可解决