`

子窗体给父窗体传值 javascript opener

阅读更多

1.新建两个页面 一个是 Parent.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父窗体</title>
<script language="javascript" type="text/javascript">
function OpenWindow(){
    window.open('son.html');
}
function setValue(m_strValue){
    document.getElementById("txt_Value").value = m_strValue;
}
</script>

</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <label>
  <input type="text" name="txt_Value" id="txt_Value" />
  </label>
  <label>
  <input type="button" name="btn_ShowClose" id="btn_ShowClose" value="按钮" onclick="OpenWindow();" />
  </label>
</form>
</body>
</html>

另一个是子窗体 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子窗体</title>
<script language="javascript" type="text/javascript" >
function CloseWind(){
    opener.setValue("传值到父窗体");
    window.close();
}
</script>

</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <label>关闭
  <input type="button" name="btn_Close" id="btn_Close" value="按钮" onclick="CloseWind();"

/>
  </label>
</form>
</body>
</html>

2.通过子窗体执行的父窗体的setValue(m_strValue)来执行赋值操作.

 

==========================================================================

javascript调用父窗口(父页面)的方法。

1:   window.parent 是iframe页面调用父页面对象

举例:

a.html

程序代码
<html>
<head><title>父页面</title></head>
<body>
<form name="form1" id="form1">

<input type="text" name="username" id="username"/>

</form>
<iframe src="b.html" width=100%></iframe>
</body>
</html>


如果我们需要在b.htm中要对a.htm中的username文本框赋值,就如很多上传功能,上传功能页在Ifrmae中,上传成功后把上传后的路径放入父页面的文本框中

我们应该在b.html中写

程序代码
<script type="text/javascript">
var _parentWin = window.parent ;
_parentWin.form1.username.value = "xxxx" ;
</script>


实例地址:   http://www.cnspry.cn/blog/attachments/window.parent实例/a.html

2:   window.opener 是window.open 打开的子页面调用父页面对象

a.html

程序代码

<script type="text/javascript">
function openSubWin()
{
var _width = 300 ;
var _height = 200 ;
var _left = (screen.width - _width) / 2 ;
var _top = (screen.height - _height) / 2 ;
window.open("b.html",null,
"height=" + _height + ",width=" + _width + ",status=no,toolbar=no,menubar=no,location=no,resizable=yes,left=" + _left + ",top=" + _top);
}
</script>
<input type="text" name="username" id="username"/>
<input type="button" value="弹出子页面" onClick="openSubWin();">


b.html

程序代码

<script type="text/javascript">
function UpdateParent()
{
var _parentWin = window.opener ;
_parentWin.form1.username.value = "xxxx" ;
}
</script>
<input type="button" name="button" id="button" value="更新主页面的UserName内容" onClick="UpdateParent();"> 



实例地址:   http://www.cnspry.cn/blog/attachments/window.opener实例/a.html

 

 

=================================================================

2个方法都是刷新父窗口,但是其中还是有奥妙的哦。
      window.opener.location.reload();这个方法在强迫父窗口的时候,在有些IE浏览器(比如安全设置高)的情况下,会弹出一 个确认对话框,提示是不是要重新再刷新一次页面,这可是比较郁闷的事情哦,我后来把这个方法替换成了 window.opener.location.href=window.opener.location.href;
就不会出现那样的问题了。

 

       window.opener其实是指本窗口的父窗口,比如,one.jsp 通过popupwindow打开了two.jsp,哪么在two.jsp里面的window.opener就是指one.jsp,所以在two.jsp里 面完全可以用window.opener调用任何一个one.jsp里面的方法,实现one.jsp和two.jsp的交互。

       注意:window.opener.location.href 只是一个链接,如果想实现父窗口的提交就要调用window.opener.action="" 和window.opener.submit();方法,但是不幸的是这段代码在firefox下不能运行,解决的办法为在父窗口中写一个提交的 function在子窗口中通过window.opener.functionname()调用。

       通常在使用window.opener的时候要去判断父窗口的状态,如果父窗口被关闭或者更新,就会出错,解决办法是加上如下的验证if(window.opener && !window.opener.closed)

 

分享到:
评论
1 楼 lingxiajiudu 2013-10-06  
    不错,完美解决我了的问题,赞一个。

相关推荐

    javascript 子窗体父窗体相互传值方法

    补充说明中提到的“模式窗体传值”可能指的是在弹出的子窗体中用户输入数据后,将这些数据传回父窗体的一种模式。父窗体通过特定的方式,如弹出模态窗口让用户操作并返回结果,这是许多现代Web应用程序的标准做法。 ...

    子窗体传值给父窗体的select

    综上所述,实现"子窗体传值给父窗体的select"的关键在于理解窗口间的通信机制,以及如何在JavaScript中操作DOM元素,特别是`select`和`checkbox`。在实际开发中,需要根据具体的业务需求和所使用的前端框架(如React...

    子窗体与父窗体传值示例js代码

    - **使用 `window.opener` 属性**:如果子窗体是由父窗体打开的,可以使用 `window.opener` 访问父窗体的全局对象,从而修改父窗体的变量或调用其方法。 - **使用事件监听**:可以创建自定义事件,由子窗体触发事件...

    JS父页面与子页面相互传值方法

    在这个例子中,子页面通过`window.opener`获取到父页面的引用,并修改了父页面文本框的值。 二、子页面是iframe框架中的页面情况 如果子页面是作为iframe嵌入在父页面中,我们可以通过`parent`关键字来访问父页面...

    Javascript 两个窗体之间传值实现代码

    本文将探讨如何使用JavaScript实现从一个子窗体向父窗体传递数据。 首先,通过window.open()函数,可以实现打开一个新的浏览器窗口。此函数通常在父窗体中调用,并可以传递一个URL参数来指定新窗口加载的页面。...

    js关闭子窗体刷新父窗体实现方法

    在JavaScript中,有时候我们需要在关闭一个子窗口时刷新其父窗口,这在处理多窗口交互的应用场景中非常常见。例如,子窗口可能用于编辑或添加数据,然后在保存后需要更新父窗口显示的信息。以下是如何使用JavaScript...

    ASP.NET 窗体间传值的方法

    2. **JavaScript交互**:在子窗体中,通过JavaScript操作父窗体的DOM元素来实现值的回传。 3. **Session、Cookie或者Application**:可以使用这些服务器端存储机制来共享数据,但这种方式不适用于临时性的数据传递。...

    Hbuilder MUI 页面刷新及页面传值问题

    在这段代码中,首先使用`plus.webview.currentWebview().opener()`获取到了打开当前页面(子页面B)的父页面(A页面)对象。如果知道父页面的ID,则可以直接使用`plus.webview.getWebviewById('A')`来获取父页面对象...

    JavaScript—window对象使用示例

    6. **子窗体向父窗体传值**: - **简单方法**: 子窗体可以通过`window.parent` 访问父窗体,并通过`window.returnValue` 传递数据。 - 父窗体: ```javascript var str = window.showModalDialog("s.html"); ...

    Javascript判断常用Demo

    1. **打开新窗体传值与回传值**: 在JavaScript中,可以使用`window.open()`函数来打开一个新的窗口或标签页,并传递参数。例如,`window.open('newPage.html', 'myWindow', 'width=400,height=400');`会打开名为`...

Global site tag (gtag.js) - Google Analytics