`
fjguodong
  • 浏览: 39356 次
社区版块
存档分类
最新评论

JS子窗口向父窗口传值

阅读更多

JS子窗口向父窗口传值

作者:阿明

转自:http://blog.sina.com.cn/s/blog_4e25ddcd0100beo8.html

 

方法一:用模式窗口

returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模式窗口(模式窗口就是子窗口,打开后不能操作父窗口,只能等模式窗口关闭时才能操作)时,用于返回窗口的值,下面举个例子:
------------------------------------------------------------------------------
//father.html
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<script language="javascript">
function showmodal(){
 var ret = window.showModalDialog("child.html",null,"dialogWidth:350px;dialogHeight:350px;help:no;status:no");
 if (ret){alert('子窗口返回真!');
 }else{
  alert('子窗口返回假!');
 }
}
</script>
</HEAD>
<BODY>
<INPUT id=button1 type=button value=Button name=button1 onclick="showmodal();">
</BODY>
</HTML>
------------------------------------------------------------------------------
//child.html
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<script language="javascript">
function trans(tag){
   if (tag==0){
     window.returnValue=false;
   } else{
     window.returnValue =true;
   }
   window.close();
}
</script>
</HEAD>
<BODY>
<INPUT id=button1 type=button value="返回真" name=button1 onclick="trans(1)">
<INPUT id=button2 type=button value="返回假" name=button2 onclick="trans(0)">
</BODY>
</HTML>
-----------------------------------------------------------------------------
这样一来可以实现从模式窗口向父窗口传递值的作用,
这个returnValue除了可以是布尔值,整型值等以外还可以是个js数组,用来传递大量数据。

showModalDialog,是模态窗口,始终获得焦点,但弹出的窗体不能刷新,此弹出的窗口里操作button,要想不弹出新窗口,需在

弹出的窗口中在<head>和</head>之间加<base target="_self">。

 

方法二:用opener

这是一个父窗口~

<html>
<head>
<title>
</title>
<script language="javascript">
function win(){
   window.open("login.html",null,"height=150,width=200");
}

</script>
</head>
<table id="t1">
<tr><td id="dd">user</td></tr>
<tr><td id="bb">sex</td></tr>
</table>
<input type="button" value="提交" onclick="win()"/>
</html>

 

下面是一个子窗口

<html>
<head>
<title>
</title>
<script language="javascript">
function win(){

   window.opener.document.all.dd.innerText=document.getElementByIdx("user").value;
   window.opener.document.all.bb.innerText=document.getElementByIdx("sex").value;

   window.close();
}

</script>
</head>
<body>
user:
<input type="text" name="user"/>
<br>sex:
<input type="text" name="sex"/>
<br>
<input type="button" value="提交" onclick="win()"/>
</body>
</html>

 

PS:

 

两个方法都很容易理解,第一种方法中window.showModalDialog()方法和window.returnValue属性都没有

在W3School文档的window对象介绍中找到,但是有找到window.opener属性。

---------------------------------------------------------------------------------------------------------

定义和用法

opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用。

opener 属性非常有用,创建的窗口可以引用创建它的窗口所定义的属性和函数。

语法

window.opener

提示和注释

注释:只有表示顶层窗口的 Window 对象的 operner 属性才有效,表示框架的 Window 对象的 operner 属性无效。

 

属性 描述 IE F O
opener 返回对创建此窗口的窗口的引用。 4 1 9

---------------------------------------------------------------------------------------------------------

考虑到兼容性,感觉用第二个方法比较好一点,但是这个方法对于含有框架页面的窗口是无效的。

而观察现在的很多网站的页面,这种真弹出式的窗口一般都不用了,而是用"DIV+CSS“实现的伪弹出窗口来替代这种窗口,因此上面的两种方式反而用的少了,只有一些老系统或者公司内部专用的系统可能还有这些用法。

分享到:
评论

相关推荐

    javascript 父窗口、子窗口传值问题

    NULL 博文链接:https://phpxiaoxin.iteye.com/blog/423340

    js中用open方式打开新窗口向父窗口传值

    js中用open方式打开新窗口向父窗口传值

    JavaScript实现弹出子窗口并传值给父窗口

    主要介绍了JavaScript实现弹出子窗口并传值给父窗口,方法很简单,这里推荐给大家,需要的朋友可以参考下

    子父窗口传值

    FineUI 子父页面传值交互,主JS,避免后台

    Js父窗口子窗口传对象

    js窗体间传值的小demo,这里是一个修改课程的例子,当然通过修改可以做成不过后台的修改,然后一次提交多条记录

    JavaScript新窗口与子窗口传值详解

    window.open()支持环境: ... yes/no | 指定窗口隐藏在所有窗口之后 alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上 depended | yes/no | 是否和父窗口同时关闭 directories | yes/no | Nav2和3的目录栏是否

    layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例

    //设置function,当执行时,弹出子窗口并传递当前窗口名称 //弹出子窗口(选择商家) function choseMerchant() { //获取当前窗口名称 var parentName= window.name; /*(由于用的ssm框架)URL对应的是...

    javascript页面之间传值

    本实例介绍的是如何把值从父窗口和子窗口之间进行相互传递,而且介绍了两种方式都可以实现效果.

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

    众所周知window.open() 函数可以用来打开一个新窗口,那么如何在子窗体中向父窗体传值呢,其实通过window.opener即可获取父窗体的引用。

    jquery弹出层

    jquery、js 父窗口、子窗口之间传值。

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

    代码如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/–&gt;使用open方式打开的窗体 //使用地址方式 window.opener.location.href=’m_Shedule_Main.aspx’;...

    JSP父页面传参数到子页面及接收示例

    1、父页面传参数到子页面 代码如下: //JavaScript代码 $.ajax({ type:”POST”, uri:”../student/studentInfo.action”, data:{ “date”:date, “stuNo”:stuNo }, success:function(data){ var params = “?...

    iframe的父子窗口之间的对象相互调用基本用法

    子窗口中调用父窗口的js方法: 代码如下: parent.changeBtnTitle(‘tzgg’); 一个父窗口中可能会有若干个功能行为类似的子窗口,子窗口中的组件要调用相同或者类似的对象或者方法,那么就把这样的方法写在父窗口中...

    Javascript showModalDialog两个窗体之间传值

    Javascript 两个窗体之间传值实现代码javascript中还有一个函数window.showModalDialog也可以打开一个新窗体,不过他打开的是一个模态窗口,那么如何在父窗体和子窗体之间传值呢?我们先看该函数的定义:...

    LHGDialog V3.5.2 正式版 lhgDialog弹出窗口组件 lhgdialog V3.5.2

    parent:子窗口的父窗口对象参数值:此参数只用在弹出的窗口中再弹出子窗口时指定父窗口对象,注意如果2层弹出窗口都有遮罩层则一定要加此参数。 dgOnLoad:窗口加载后执行的函数参数值:注意此参数值一定要为函数...

    javascript frameset and window

    其中有两个文件夹,“two frameset”文件是在一个网页中设计上下两个框架,然后在上面的框架中设计一个表单,将...“father and son”文件中以个窗口中建立一个父框架跟子框架。然后就子框架的值传给父框架进行判断。

    asp.net知识库

    如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp.net地址转义(分析)加强版 Web的桌面提醒(Popup) Using the Popup Object Click button only once in asp.net 2.0 Coalesys PanelBar ...

Global site tag (gtag.js) - Google Analytics