window.opener使用

详细请参考http://www.cnblogs.com/jinianjun/archive/2012/07/29/2614229.html

window.opener 实际上就是通过window.open打开的窗体的父窗体。

比如在父窗体parentForm里面 通过 window.open("subForm.html"),那么在subform.html中 window.opener
就代表parentForm,可以通过这种方式设置父窗体的值或者调用js方法。
如:1.window.opener.test(); ---调用父窗体中的test()方法
    2.如果window.opener存在,设置parentForm中stockBox的值。
    if (window.opener && !window.opener.closed) {
        window.opener.document.parentForm.stockBox.value = symbol;
      }

1、window.opener 的用法

window.opener在一般的用法中,只是用来解决关闭窗口时不提示弹出窗口,而对它更深层的了解一般比较少。
其实window.opener是指调用 window.open方法的窗口。在工作中主要是用来解决部分提交的。这种跨页操作
对工作是非常有帮助的。如果你在主窗口打开了一个页面,并且希望主窗口刷新就用这个,打开页面的window.
opener就相当于主窗口的window。主窗口的刷新你可以用window.opener.location.reload();如果你用虚拟
的目录:如struts的*.do会提示你重试,你可以改成window.opener.yourformname.submit(),这样就好了。

2、在应用中还有这样一个情况,在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口
   代码如下:
     function closeWin(){
         window.opener.location="javascript:reloadPage();";
         window.opener=null;
         window.close();
     }
     function window.onbeforeunload(){
         window.opener.location="javascript:reloadPage();";
         }
     }
reloadPage方法如下:
function reloadPage() {
         history.go(0);
         document.execCommand("refresh")
         document.location = document.location;
         document.location.reload();
     }
3.window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,
然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,就可以写为:                                           window.opener.document.getElementById("name").value = "输入的数据";
对于javascrīpt中的window.opener没有很好的理解。
为什么框架中不能使用,弹出窗口的父窗口不能在框架里面的某个页面呢?那怎样通过弹出窗口操作框架中的父窗口呢?
 opener.parent.frames['frameName'].document.all.input1.value 试试这个:)
众所周知JavaScript中:
var win = window.open(url,windowName,...); 的使用,
而win.opener则是指向父窗口的引用
然而,有种情况却比较特别,
假如有两个窗口window1和window2
按下列步骤执行:

var win = window.open(url,windowName,...);// (window1)

var win = window.open(url,windowName,...);//(window2)

其中先后这两次打开的子窗口的windowName一样

此时你会发现在window2中的win.opener却不是指向window2的,却是指向window1.

如果你想在子窗口关闭父窗口的话,就不正确了,因此可以修改上面的执行方法为:

var win = window.open(url,windowName,...);? (window1)

win.opener = window;

var win = window.open(url,windowName,...);? (window2)

win.opener = window;

 

 

 

 

 
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值