JavaScript 模式窗口 showModalDialog 与 showModelessDialog 详解

作者:闭包旅人

时间:2026-10-28

浏览:182

本文详细介绍 JavaScript 中模式对话框 showModalDialog 与非模式对话框 showModelessDialog 的区别、语法结构及常用参数。重点讲解如何通过 vArguments 传递参数,利用 window.dialogArguments 获取父窗口数据,以及通过 window.returnValue 返回结果,包含完整的代码示例与交互逻辑。

文章目录

模式对话框与非模式对话框的区别

在 JavaScript 中,对话框分为模式对话框和非模式对话框两种类型。两者的核心区别在于:在模式对话框关闭之前,用户无法在同一页面的其他区域进行操作;而非模式对话框则允许用户在打开对话框的同时,继续与父页面进行交互。典型的模式对话框示例是“打开文件”窗口,必须对该对话框执行操作后,才能继续操作调用它的程序;而非模式对话框则没有此限制。

模式对话框调用方法为:showModalDialog;非模式对话框调用方法为:showModelessDialog。

语法结构与参数详解

这两个方法的语法结构如下: vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

参数说明: vReturnValue:返回值,即由对话框返回的结果。 sURL:必选参数,指定要打开的页面地址。

vArguments:可选参数。

可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 sFeatures-- 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。 1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。 2.dialogWidth: 对话框宽度。 3.dialogLeft: 离屏幕左的距离。 4.dialogTop: 离屏幕上的距离。 5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。 6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。 7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。 8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。 9.scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。 下面几个属性是用在HTA中的,在一般的网页中一般不使用。 10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。 11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。 12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。 参数传递:

参数传递与返回值处理

参数传递方式: 1. 通过 vArguments 向对话框传递参数。类型不受限制,字符串类型最大长度为 4096 个字符。也可以传递对象,例如: ------------------------------- parent.htm


<script> 
var obj = new Object(); 
obj.name="51js"; 
window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px"); 
</script>

modal.htm


<script> 
var obj = window.dialogArguments 
alert("您传递的参数为:" + obj.name) 
</script>

------------------------------- 2. 可以通过 window.returnValue 向打开对话框的窗口返回信息,返回值也可以是对象。例如: ------------------------------ parent.htm


<script> 
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px"); 
alert(str); 
</script>

modal.htm


<script> 
window.returnValue="http://www.51js.com"; 
</script>

与父窗口的交互操作

使用 window.showModalDialog 或 window.showModelessDialog 打开模式窗口后,常涉及与父窗口的交互问题。 要与父窗口进行交互,在调用 showModalDialog 或 showModelessDialog 方法时,需将第二个参数传为 window 对象,例如: window.showModelessDialog('filename.htm',window,'dialogWidth=200px;dialogHeight=250px;') 接下来,获取父窗口中的数据和方法是常见需求。通常,父窗口获取子窗口参数可通过 returnValue 实现。


//取得父窗口的JS变量 var 
window.dialogArguments.var; 
//获得父窗口的对象和属性 
window.dialogArguments.form1.name.value ; 
//调用父窗口的方法 fun
window.dialogArguments.fun() ;

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章