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.open方法的窗口。 你可以改成这样 window.opener.yourformname.submit() 2〉 在应用中有这样一个情况, </script> </script> ============================================== 补充,在父窗口是frame的时候在刷新父窗口的时候会出现问题: The page cannot be refreshed without resending the information. window.opener.parent.document.frames.item('mainFrame').location.reload(); ======================================================================================== window.opener 的用法 ??? 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 试试这个:) ? ? ? 正确使用window.open返回对象的opener 众所周知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; 只有这样修改才OK ? ? ? ? ? 通过window.showModalDialog或者.showModelessDialog弹出的页面 这种情况需要两个步骤: strRtn=window.showModalDialog(......) 这时,strRtn='ok' ? 页面中实现:
???? 在工作中主要是用来解决部分提交的。这种跨页操作对工作是非常有帮助的。
如果你在主窗口打开了一个页面,并且希望主窗口刷新就用这个,打开页面的window.opener就相当于
主窗口的window。
主窗口的刷新你可以用
window.opener.location.reload();
如果你用虚拟的目录:如struts的*.do会提示你重试
就好了
在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口
function closeWin(){
???????? hasClosed = true;
???????? window.opener.location="javascript:reloadPage();";
???????? window.close();
???? }
???? function window.onbeforeunload(){
???????? if(!hasClosed){
???????????? window.opener.location="javascript:reloadPage();";
???????? }
???? }
上面的代码在关闭B窗口的时候会提示错误,说缺少Object,正确的代码如下:
function closeWin(){
???????? hasClosed = true;
???????? window.opener.location="javascript:reloadPage();";
???????? window.opener=null;
???????? window.close();
???? }
???? function window.onbeforeunload(){
???????? if(!hasClosed){//如果已经执行了closeWin方法,则不执行本方法
???????????? window.opener.location="javascript:reloadPage();";
???????? }
???? }
reloadPage方法如下:
function reloadPage() {
???????? history.go(0);
???????? document.execCommand("refresh")
???????? document.location = document.location;
???????? document.location.reload();
???? }
PS:由于需要支持正常关闭和强制关闭窗口时能捕捉到事件,用了全局变量hasClosed
后修改如下:
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
不需要执行自带的reload()方法,注意,不要再画蛇添足加上这一句:
最后,为了同时支持刷新普通父窗口和frame父窗口,代码如下:
function closeWin() {
???????? hasClosed = true;
???? <%if(null != frame){%>
???????? window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
???? <%}else{%>
???????? window.opener.location = "javascript:reloadPage();";
???? <%}%>
???????? //window.opener.top.mainFrame.location="javascript:reloadPage();";
???????? //self.opener.frames.mainFrame.location.reload(true);
???????? window.opener = null;
???????? window.close();
???? }
???? function window.onbeforeunload(){
???????? if (!hasClosed) {
???????? <%if(null != frame){%>
???????????? window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
???????? <%}else{%>
???????????? window.opener.location = "javascript:reloadPage();";
???????? <%}%>
???????????? window.opener = null;
???????? }
???? }
关于window.opener
?
?
?
1 在父窗口.showModalDialog或.showModelessDialog方法的第二个参数传递window对象
比如: window.showModelessDialog('a.htm',window);
2 在a.htm中就可以通过window.dialogArguments获取该参数
比如: window.dialogArguments.fun1();
PS:子窗口可以通过设置window.returnValue设置页面返回值
比如: window.returnValue=’OK’;window.close();
父页面
function reloadPage() {
???????? document.form1.submit();
???? }
弹出页面调用closeWin();
function closeWin(){
???????? hasClosed = true;
???????? window.opener.location="javascript:reloadPage();";
???????? window.opener=null;
???????? window.close();
???? }
详细解决方案
window.opner的步骤
热度:89 发布时间:2012-08-28 12:37:01.0
相关解决方案
- javascript window open在ie中设立不起作用,求解决
- window.location.href错误
- window.open传参数在页面获取地址少了参数,该如何解决
- 【EXTJS】iframe里嵌套ext.window,怎样使ext.window弹出到iframe外,该怎么解决
- window.showmodaldialog()苹果浏览器不支持?50分在线求解!该如何处理
- window mobile下 midlet 怎么调用ie mobile
- window xp 装配nutch1.6
- 怎么读取其它进程中WindowsForms10.Window.8.app.0.378734a窗体内的表格
- window.URl.createObjectURL()如何在vs中编辑后不能在火狐中运行,在IE中运行没有关问题
- window.location.href不跳转有关问题
- window.showModalDialog弹出窗体有关问题
- 关于top.window.location跳转的有关问题
- 用c#自带控件webBrowser开发浏览器程序,怎么阻止弹出窗口(window.open)
- window.showModalDialog子页面临父页面传值
- window.close怎么关闭不提示?IE8上
- window.open怎么弹出一个新的窗体啊
- window.showModalDialog页面传值! 求help解决思路
- 请教为什么小弟我的 window.showModalDialog打开的网页没有地址栏状态栏什么的呢
- window.close()在FF下无效,该怎么解决
- window.open( "open.html " "窗口名""")解决方案
- window.open的地址不对,不明缘由,该如何解决
- window.open( href,"right")中的right是什么意思啊该怎么解决
- window.open刷新有关问题。大家帮忙看下啊小弟我已经搞了三天了。没弄明白。这个是什么原因。
- window.opener的一个疑问?解决办法
- window.open有关问题
- window.location.href 在 FireFox 3.0.3 下却不管用,有什么好的解决方法没有
- 用 window.print() 打印,怎么不显示网址`多谢,
- window.showmodaldialog() 产生的有关问题
- window.open 怎么隐藏状态栏
- window.showModalDialog 相关有关问题