JS/JQUERY(6)——JS中window对象的top,parent,opener含义
1.top
该变更永远指分割窗口最高层次的浏览器窗口。如果计划从分割窗口的最高层次开始执行命令,就可以用top变量。
/**
* 打开新的子页面
*/
var url = "./LoadAssetCard.jsp";
openWindow(strjsp);
/**
* 子页面返回父页面,并将value返回父页面的 afterQuery()方法中
*/
var value = "内容";
top.opener.afterQuery(value);
top.close();
2.opener opener用于在window.open的页面引用执行该window.open方法的的页面的对象。例如:A页面通过window.open()方 法弹出了B页面,在B页面中就可以通过opener来引用A页面,这样就可以通过这个对象来对A页面进行操作。
/**
* 跳转的新的页面
*/
window.opener.location.href="./AssetCardAddInput.jsp?type=Normal&loadAssetCard="+value;
window.opener.location.reload() 与 window.opener.location.href=window.opener.location.href 都是弹出窗口关闭时用来刷新父窗口。
但window.location.Reload 如果有数据提交的动作,会提示是否提交的(是和否选项)
window.opener.location.href=window.opener.location.href 是定向url提交数据,则不会出现是和否的选择框。
注意: window.opener.location.href 只是一个链接,如果想实现父窗口的提交就要调用window.opener.action ="" 和window.opener.submit();方法,但是不幸的是这段代码 在firefox下不能运行,解决的办法为在父窗口中写一个提交的 function在子窗口中通过window.opener.functionname()调用。
通常在使用window.opener的时候要去判断父窗口的状态,如果父窗口被关闭或者更新,就会出错,解决办法是加上如下的验证if(window.opener && !window.opener.closed)
3.parent parent用于在iframe,frame中生成的子页面中访问父页面的对象。例如:A页面中有一个iframe或frame,那么iframe 或frame中的页面就可以通过parent对象来引用A页面中的对象。这样就可以获取或返回值到A页面中。
/**
* 通过子页面返回父页面,afterSubmit()为父页面中的一个方法;
*/
<html>
<script language="javascript">
parent.fraInterface.afterSubmit("<%=FlagStr%>","<%=Content%>");
</script>
</html>
4.另外self 指的是当前窗口 parent与opener的区别 parent指父窗口,在FRAMESET中,FRAME的PARENT就是FRAMESET窗口。 opener指用WINDOW.OPEN等方式创建的新窗口对应的原窗口。 parent是相对于框架来说父窗口对象 opener是针对于用window.open打开的窗口来说的父窗口,前提是window.open打开的才有 document.parentWindow.menthod()調用父頁面的方法 附:Window对象、Parent对象、Frame对象、Document对象和Form对象的阶层关系 Window对象→Parent对象→Frame对象→Document对象→Form对象, 如下: parent.frame1.document.forms[0].elements[0].value;