1.父页面调用iframe里的js函数:(contentWindow)
document.getElementById('iframedemo').contentWindow.demofunction(); //与下边一句等价
window.frames['iframedemo'].contentWindow.demofunction();
其中iframedemo是iframe的id,demofunction是iframe里的js函数名
2.父页面调用iframe里的dom元素:(contentDocument)
document.getElementById('iframedemo').contentDocument.getElementById("INPUT_Text").value; //与下边一句等价
window.frames['iframedemo'].contentDocument.getElementById("INPUT_Text").value;
其中iframedemo是iframe的id
注意事项:
contentWindow 兼容各个浏览器,可取得子窗口的 window 对象。
contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 对象。
题外话:
那么从子页面(iframe)调用父页面,就用window.parent;
如果从页面A中,执行了window.open(url);打开的页面B, 那么页面B访问页面A,就用window.opener;
如果跨域访问父页面或者子页面的js函数或dom,会有拒绝访问的情况,一般要保证同域,document.domain="camnpr.com";
举个栗子:
main.html
<frameset rows="40,*" rows="*" frameborder="NO" border="0">
<frame id="header" src="<c:url value='/jsp/common/header'/>" name="header" noresize />
<frameset cols="160,*" cols="*" frameborder="NO" border="0">
<frame id="menu" src="<c:url value='/jsp/common/left'/>" name="left" noresize />
<frameset rows="40,*" cols="*" frameborder="NO" border="0">
<frame id="rightheader" src="<c:url value='/jsp/common/rightheader'/>" name="rightheader" noresize />
<frame id="body" src="<c:url value='/resources/html/index.html'/>" name="main" />
</frameset>
</frameset>
</frameset>
rightheader.html
<div style="float: left; min-width: 100px; height: 15px">
<form id="select_form" action="<c:url value='/server/select'/>" method="post">
<font>当前选择的默认服务器:</font>
<select id="serverIdx" name="serverIdx" οnchange="defaultServerChange()">
<option value="-1">无</option>
<c:forEach var="server" items="${sessionScope.servers}">
<option value="${server.serverIdx}"
<c:if test="${server.serverIdx eq sessionScope.default_server_idx}">selected</c:if>>${server.name}</option>
</c:forEach>
</select>
</form>
</div>
在body.html里如何获取rightheader.html中的页面元素:
var serverIdx = $("body",parent.document.getElementById("rightheader").contentDocument).find("#serverIdx").val();
ref: http://www.camnpr.com/archives/parent-iframe-contentwindow-contentdocument.html