js调用其他frame里的js函数和dom元素

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值