`

Javascript弹出子窗口

阅读更多

1、Javascript弹出子窗口

可以通过多种方式实现,下面介绍几种方法

(1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象 //IE7里不支持

其用法为:
window.open(URL,windowName,parameters);

URL: 描述要打开的窗口的URL地址,如何为空则不打开任何网页;

windowName:描述被打开的窗口的民称,可以使用'_top'、'_blank'等内建名称,这里的名称跟<a href="..." target="...">里的target属性是一样的。

parameters:描述被打开的窗口的参数值,或者说是样貌,其包括窗口的各个属性值,及要传入的参数值。

例如:

打开一个 400 x 100 的干净的窗口:
open('','_blank','width=400,height=100,menubar=no,toolbar=no,
location=no,directories=no,status=no,scrollbars=yes,resizable=yes')

也可以这样写: var newWindow = open('','_blank');

参数说明如下:

top=# 窗口顶部离开屏幕顶部的像素数
left=# 窗口左端离开屏幕左端的像素数
width=# 窗口的宽度
height=# 窗口的高度
menubar=... 窗口有没有菜单,取值yes或no
toolbar=... 窗口有没有工具条,取值yes或no
location=... 窗口有没有地址栏,取值yes或no
directories=... 窗口有没有连接区,取值yes或no
scrollbars=... 窗口有没有滚动条,取值yes或no
status=... 窗口有没有状态栏,取值yes或no
resizable=... 窗口给不给调整大小,取值yes或no


(2) 在javascript中除了通过open()方法建立window对象实现弹出窗口外,还可以通过建立对话框的方式弹出窗口。
如:
    alert(""); //弹出信息提示对话框
    confirm(""); //弹出信息确认对话框
    prompt(""); //具有交互性质的对话框

但是,上述实现的弹出窗口具有的功能较为单一,只能完成较为简单的功能。对于需要在对话框中显示多个数据信息,

甚至是HTML控件就无能为力了。

(3) 使用模态对话框实现复杂的对话框需求
在javascript的内建方法中还有一类方法可以实现通过对话框显示HTML内容,
也就是说可以通过创建对话框的方式来完成创建窗口对象所能完成的功能。
包括创建模态对话框和非模态对话框两种。
   
实现方法为:

//创建模态你对话框
window.showModalDialog(sURL,vArguments,sFeatures)


//创建非模态对话框
window.showModelessDialog(sURL,vArguments,sFeatures)

其区别在于:

用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框

的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。 showModeDialog()则不然。

参数说明:

sURL:必选参数,类型:字符串。

用来指定对话框要显示的文档的URL。

vArguments:可选参数,类型:变体。

用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。

sFeatures:选参数,类型:字符串。

用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。

dialogHeight:对话框高度

不小于100px,IE4中dialogHeight和dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
  
dialogWidth: 对话框宽度。
 
dialogLeft: 距离桌面左的距离。
  
dialogTop: 离桌面上的距离。
 
center: 窗口是否居中

默认yes,但仍可以指定高度和宽度,取值范围{yes | no | 1 | 0 }。
  
help: 是否显示帮助按钮

默认yes,取值范围 {yes | no | 1 | 0 }。

 resizable: 是否可被改变大小。

默认no,取值范围 {yes | no | 1 | 0 } [IE5+]。

 status: 是否显示状态栏。

默认为yes[ Modeless]或no[Modal],

取值范围{yes | no | 1 | 0 } [IE5+]。

scroll:指明对话框是否显示滚动条。

默认为yes,取值范围{ yes | no | 1 | 0 | on | off }。

还有几个属性是用在HTA中的,在一般的网页中一般不使用。

dialogHide:在打印或者打印预览时对话框是否隐藏。

默认为no,取值范围{ yes | no | 1 | 0 | on | off }。

edge:指明对话框的边框样式。

默认为raised,取值范围{ sunken | raised }。

unadorned:默认为no,取值范围{ yes | no | 1 | 0 | on | off }。

传入参数:

要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象

例如:

var newWin=window.showModalDialog(url,window,'dialogHeight:500px, dialogLeft:100px, dialogTop:100px,

dialogWidth:300px, status:0, edge:sunken');

newWin.open();

与使用window.open()方法创建窗口相比,模态方法创建窗口的区别在于有模态方法创建的窗口后将不能操作父窗口.

2、子窗口与父窗口间通信

(1) 使用window.open()创建的窗口与父窗口通信
可以在子窗口页面中通过window.opener来获取父窗口对象,获取之后子窗口便可以对父窗口执行刷新,传值等操作。
如:
   window.opener.location.reload(); //子窗口刷新父窗口
   window.opener.location.href //获取父窗口href
   window.opener.locaiton.pathname //获取父窗口路径名

   //刷新父页面
   window.location.href=window.location.href ; //重新定位父页面
   window.location.reload;


(2) 模态窗口与父窗口通信
通过使用showModelDialog(),及showModelessDialog()方法创建的子窗口想与父窗口通信时,不能通过window.opener

来获取父窗口对象。要实现通信,必须在创建模态子窗口时向子窗口传入父窗口对象。

实现方式为:

在父窗口中:

var newWin=window.showModelDialog(url,window,'');
newWin.open();

此时参数window即是父窗口对象

在子窗口中:

需首先获取父窗口对象,然后才能使用父窗口对象。由于父窗口对象是在创建
子窗口时通过传入参数的方式传入的,因此,在子窗口中也只能通过获取窗口参数的方式获取父窗口对象。获取方式如下

var parent=widnow.dialogArguments;
变量parent便是父窗口对象。

例如:

//通过子窗口提交父窗口中的表单:form1,提交后执行查询操作
var parent=window.dialogArguments;
parent.document.form1.action="QueryInfor.jsp";
parent.submit();

//刷新父页面
var parent=window.dialogArguments;
parent.location.reload();

//从子窗口传值到父窗口
要实现在模态子窗口中传值到父窗口,需要使用window.returnValue完成

实现方法如下:

在子窗口中:

//获取父窗口某字段值,对该值加一后返回父窗口
var parent=window.dialogArguments;
var x=parent.docuement.getElementById("age").value;
x=x+1;

//传回x值
window.returnValue=x;

在父窗口中:

//获取来自子窗口的值
var newWin=window.showModelDialog(url,window,'');
if(newWin!=null)
document.getElementById("age").value=newWin;

//在子窗口中设置父窗口的值
在子窗口中向父窗口中传入值似乎没有直接设置父窗口中的值来得明了。直接设置父窗口中元素的值显得要更灵活一些,不过具体使用哪种方法要根据实际情况和已有的实现方式而定,因为如果使用了不切实际的方法不仅降低开发效率,也降低了执行效率,往往也会造成不优雅的实现方式和代码风格。

子窗口设置父窗口的值使用方法如下:

子窗口中:

var parent=window.dialogArguments;
var x=parent.document.getElementById("age").value;
x=x+1;
//设置父窗口中age属性值
parent.document.getElementById("age").value=x;

以上是我在项目中使用javascript解决子窗口问题时,收集及积累的一些方法和资料。我是使用建立模态窗口的方式来实现的(这主要与项目本身有关),不过其实不论是使用window.open()还是使用window.showModelDialog()进行传参等操作时虽然在实现方法上有很大的差别,初次接触会觉得有点乱,但只要理清子窗口与父窗口之间的关系和角色之后,就很好理解了。

转载:http://blog.csdn.net/squirrelRao/archive/2007/08/15/1745306.aspx

补充:

子窗体传值给父窗体可以通过函数传值

1.htm 父窗体代码

<script language="javascript" >

function toUrl()

{

window.open("2.htm","_blank");

}

function getvalue(a)

{ Form1.Text1.value=a; }

</script>

<form id="form1">

<input id="text1" width=150px/>

<input id="button1" name="button1" onclick="toUrl()"/>

</form>

2.htm 子窗体

<script language="javascript" >

function goBack()

{

window.opener.getvalue("123");

window.close();

}

</script>

<form id="form1">

<input id="button1" name="button1" onclick="goBack()"/>

</form>

子窗体父窗体之间传值通过摸态对话框,试验代码

1.htm 父窗体

<script language="javascript" >

function transVal()

{

var newwin=window.showModalDialog("2.htm",window);

if(newwin!="[object]")

{ document.getElementById("Text1").value=newwin; }

}

</script>

<form id="form1">

<input id=text1 width=150px/>

<input type="button" id=button1 onclick="transVal()"/>

</form>

2.htm 子窗体

<script language="javascript" >

function reVal()

{var x="123";

window.returnValue=x;

window.close();}

</script>

<form id="form1">

<input type="button" id=button1 onclick="reVal()"/>

</form>

分享到:
评论

相关推荐

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

    在JavaScript中,弹出子窗口并传递值给父窗口是一个常见的需求,特别是在构建交互式的Web应用时。这个过程可以通过使用`window.open()`或`window.showModalDialog()`函数来实现。让我们详细了解一下这两个方法以及...

    javascript弹出窗口中增加确定取消按钮

    在Web开发中,使用JavaScript弹出窗口来获取用户的确认或者提供额外的操作选项是一种常见的交互方式。本文主要介绍如何在ECShop这样的电子商务平台上,通过JavaScript代码实现在弹出窗口中增加“确定”和“取消”...

    JavaScript弹出窗口方法汇总_.docx

    JavaScript 弹出窗口方法汇总 JavaScript 弹出窗口方法是 Web 开发中常用的技术,用于实现弹出窗口、刷新网页、模式窗口等功能。本文将对 JavaScript 弹出窗口方法进行总结和分析,帮助读者更好地理解和应用这些...

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

    在JavaScript编程中,父窗口与子窗口之间的通信是一种常见的需求,特别是在构建多窗口应用程序或弹出窗口时。本文将深入探讨如何在JavaScript中实现父窗口与子窗口之间的数据传递。 首先,我们需要理解“父窗口”和...

    在html页面中弹出子页面效果

    在HTML页面中实现弹出子页面的效果是一种常见的交互设计,常用于展示详细信息、弹窗确认操作或提供附加功能。这种效果通常是通过JavaScript或者相关的库如jQuery来实现的。Struts1是一个较老的Java Web框架,它允许...

    javascript打开静态子窗口

    这样的子窗口往往用于展示固定的信息或者进行特定的操作,例如弹出一个登录框或表单提交确认对话框等。 #### 2. 使用 `window.open()` 方法 在JavaScript中,可以通过`window.open()`方法来打开一个新的浏览器窗口...

    弹出窗口灰色背景

    而`asyncbox`可能是弹出窗口的具体实现,它可能是一个JavaScript文件,包含自定义的函数或类,用于创建和管理弹出窗口。 在`asyncbox.js`中,我们可以预期找到与弹出窗口相关的函数,比如打开和关闭窗口的逻辑,...

    aspx页面弹出窗口代码大全

    - 使用`window.alert()`,`window.confirm()`和`window.prompt()`方法可以创建基本的JavaScript弹出对话框。例如,`alert("消息")`会显示一个包含指定文本的警告对话框。 - jQuery库提供更高级的弹出选项,如`$....

    javascript经典特效---子窗口对父窗口的操作.rar

    在网页设计中,我们经常会遇到“子窗口”(弹出的新窗口)与“父窗口”(打开子窗口的原始窗口)之间的交互需求。这个压缩包“javascript经典特效---子窗口对父窗口的操作.rar”显然包含了关于如何使用JavaScript...

    子窗口与父窗口刷新

    这里的"子窗口"通常指的是弹出的窗口、框架或者iframe,而"父窗口"则是打开子窗口的那个主页面。在这样的场景下,用户在子窗口中操作并提交数据后,可能希望父窗口能即时显示最新的数据,而不是手动刷新整个页面。...

    JavaScript实际应用子窗口和父窗口

    ### JavaScript 实际应用:子窗口与父窗口交互详解 在前端开发中,有时我们需要实现不同窗口之间的信息交换,比如从父窗口向子窗口传递数据,或者反过来从子窗口向父窗口返回信息。本文将通过具体示例来详细介绍...

    javascript弹出对话框总结

    ### JavaScript弹出对话框知识点详解 #### 一、`window.open()` 方法 `window.open()` 是JavaScript中最常见的打开新窗口的方法。此方法接受三个参数: 1. **URL**:要加载到新窗口中的文档的URL地址。 2. **...

    HTML 父窗口打开子窗口,并接收子窗口返回的值.zip

    HTML 和 JavaScript 是网页开发中的两种基础技术,它们在创建交互式和动态网页方面发挥着重要作用。在这个名为"HTML 父窗口打开...这在实现多窗口应用程序或者在弹出窗口中进行用户操作并返回结果到主窗口时非常有用。

    Javascript弹出窗口的各种方法总结

    代码如下://关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write(“[removed]window.close();[removed]”); //关闭,父窗口和子窗口都不弹出对话框,直接关闭this.Response.Write(“[removed]”);this.Response....

    javascript 弹出的窗口返回值给父窗口具体实现

    ### JavaScript 弹出窗口返回值给父窗口具体实现知识点 #### 1. 窗口间通信的需求 在Web开发中,经常需要在父窗口和弹出窗口间进行数据交互。一个典型的场景是弹出窗口用于让用户进行某些选择或者填写表单,之后将...

    用javascript父窗口控制只弹出一个子窗口

    在JavaScript中,父窗口控制只弹出一个子窗口的需求通常用于避免重复弹窗,提升用户体验。下面我们将详细讨论如何实现这一功能,以及涉及到的相关知识点。 首先,基本的弹出新窗口操作可以通过`window.open()`函数...

    easyUi弹出window窗口传值与调用父页面的方法,子页面给父页面赋值

    在EasyUI中,我们可能会遇到需要在弹出窗口(子页面)与父页面之间进行数据传递或调用父页面方法的需求。下面将详细讲解这个过程。 首先,让我们理解标题中的“弹出window窗口传值”。在EasyUI中,创建一个弹出窗口...

    js弹出保存对话框

    本文将详细介绍如何利用JavaScript结合ActiveX对象实现弹出保存对话框的功能。 #### 二、关键代码解析 ##### 1. 创建ActiveX对象 ```javascript var Shell = new ActiveXObject("Shell.Application"); ``` 这里...

Global site tag (gtag.js) - Google Analytics