iframe 父窗口和子窗口相互的调用方法集锦

一、父窗口调用iframe子窗口方法

1.HTML语法:<iframe name="myFrame" src="child.html"></iframe>

2.父窗口调用子窗口:myFrame.window.functionName();

3.子窗口调用父窗口:parent.functionName();

简单的说,也就是在子窗口调用的变量或函数前加一个parent就行了

4.父窗口页面源码:

<html> 
<head> 
<script type="text/javascript"> 
function say() { 
alert("parent.html------>I'm at parent.html"); 
} 
function callChild() 
{ 
//document.frames("myFrame").f1(); 
myFrame.window.say(); 
} 
</script> 
</head> 
<body> 
<input type=button value="调用child.html中的函数say()" onclick="callChild()"> 
<iframe name="myFrame" src="child.html"></iframe> 
</body> 
</html> 

5.子窗口页面:

<html> 
<head> 
<script type="text/javascript"> 
function say() 
{ 
alert("child.html--->I'm at child.html"); 
} 
function callParent() { 
parent.say(); 
} 
</script> 
</head> 
<body> 
<input type=button value="调用parent.html中的say()函数" onclick="callParent()"> 
</body> 
</html> 

二、iframe父窗口和子窗口相互的调用方法

1、IE中使用方法:

父窗口调用子窗口:iframe_id.iframe_document_object.object_attribute=attribute_value

eg:onClick="iframe_text.myH1.innerText='http://www.pint.com';"

子窗口调用父窗口:parent.parent_document_object.object_attribute=attribute_value

eg:onClick="parent.myH1.innerText='http://www.pint.com';"

2、Firefox中使用的方法

上面在IE下没有问题,但在firefox下不正常。在firefox下,应该是如下调用方法:

父窗口调用子窗口:

window.frames["iframe_id"].document.getElementById("iframe_document_object").object_attribute_value

eg:window.frame["iframe_text"].document.getElementById("myH1").innerHTML="http://hi.xx.com;"

子窗口调用父窗口:

parent.document.getElementById("parent_document_object").object_attribute_value

eg:parent.document.getElementById("myH1").innerHTML="http://xx.com;"

3、完整的例子

test.html

<HTML> 
<HEAD> 
<TITLE> Test Page </TITLE> 
<script src="prototype-1.4.0.js"></script> 
<script language="javascript"> 
function show() 
{ 
window.frames["iframe_text"].document.getElementById("myH1").innerHTML = "http://hi.jb51.net"; 
} 
</script> 
</HEAD> 
<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="getAttributeMethod"></textarea> 
<input type="button" onClick="show();" value="提交"/> 
</form> 
<h1 id="myH1">d</h1> 
</BODY> 
</HTML> 

frame_test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>无标题文档</title> 
</head> 
<script language="javascript"> 
function show() 
{ 
parent.document.getElementById("myH1").innerHTML = http://jb51.net; 
} 
</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.html里面firefox下访问iframe必须用name,不能用id,所以要改为name="iframe_test"

 

posted @ 2015-06-15 10:42  暗夜心慌方  阅读(188)  评论(0)    收藏  举报