模态窗口与非模态窗口

 对话框一般分为两种类型:模态类型(modal)与非模态类型(modeless)。

所谓模态对话框,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框。非模态对话框则不会强制此种特性,用户可以在当前对话框以及其他窗口间进行切换。本文介绍如何使用JavaScript语言来创建这两种类型的对话框、控制其大小和位置、改变其外观以及在对话框间的数据传递。(引用) 
一、创建模态和非模态对话框

创建模态对话框:(会缓存最近一次页面的值,通过一些设置可绕过系统的判断) 
vReturnValue = window.showModalDialog(sURL [, vFreeArgument] [, sOrnaments]); 
创建非模态对话框:(不会) 
vReturnValue = window.showModelessDialog(sURL [, vFreeArgument] [, sOrnaments]);

· VReturnValue:对于showModalDialog(),它表示被打开的对话框窗口设置的returnValue属性值。对于showModelessDialog(),它表示新窗口对象。  
· VFreeArgument:这个参数可用于传递某种类型的数据到打开的对话框,数据可以是一个数值、字符串、数组或者一个对象类型。在新窗口中引用这个数值时,可通过新创建window对象的dialogArguments 属性。  
· SOrnaments:用这个参数指定新窗口的外观。可选择的窗口属性有很多种,当有多种控制需求时,将相关内容用一个字符串连接起来,其间用分号隔开。以下是可选择的属性种类:  
o dialogHeight: sHeight  
o dialogLeft: sXpos  
o dialogTop: sYpos  
o dialogWidth: sWidth  
o center: ( yes | no | 1 | 0 | on | off )  
o dialogHide: ( yes | no | 1 | 0 | on | off )  
o edge: ( sunken | raised )  
o help: ( yes | no | 1 | 0 | on | off )  
o resizable: ( yes | no | 1 | 0 | on | off )  
o scroll: ( yes | no | 1 | 0 | on | off )  
o status: ( yes | no | 1 | 0 | on | off )  



模态窗口window.showModalDialog与非模态窗口window.showModellessDialog

 1、基本知识 

showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。


    2、使用方法
vReturnValue=window.showModalDialog(sURL[,vArguments][,sFeatures]);
vReturnValue=window.showModelessDialog(sURL[,vArguments][,sFeatures]);


    3、参数说明
 参数名称  性质  类型  作用
 sURL  必选  字符串  用来指定对话框要显示的网页的URL。
 vArguments  可选  变体  用来向对话框传递参数。参数类型不限。
对话框通过window.dialogArguments来取得传递进来的参数。
 sFeatures  可选  字符串  用来描述对话框的外观等信息

    4、sFeatures参数说明
 参数名称  参数属性  说明
 dialogHeight  npx  对话框高度,不小于100px
 dialogWidth  npx  对话框宽度
 dialogLeft  npx  离主窗口左的距离
 dialogTop  npx  离主窗口上的距离
 center  {yes | no | 1 | 0 }  窗口是否居中,默认yes
 help  {yes | no | 1 | 0 }  是否显示帮助按钮,默认yes
 resizable  {yes | no | 1 | 0 }  是否可改变大小,默认no
 status  {yes | no | 1 | 0 }  是否显示状态栏,默认为yes[ Modeless]或no[Modal]
 dialogHide  { yes | no | 1 | 0 | on | off }  在打印或者打印预览时对话框是否隐藏,默认为no
 scroll  { yes | no | 1 | 0 | on | off }  指明对话框是否显示滚动条,默认为yes
 edge  { sunken | raised }  指明对话框的边框样式,默认为raised
 unadorned  { yes | no | 1 | 0 | on | off }  默认为no
 注意:dialogHide,edge,unadorned这三个属性是用在HTA(HTML Aplication)中的,一般网页上用不到。


    5、参数传递 通过vArguments来传递参数,类型不限制,对于字符串类型,最大为4096个字符,也可以传递对象,例如:
parent.htm 
<script>
window.showModalDialog("sun.htm","传递进去的参数","help:no;scroll:no");
</script>
sun.htm
<script>
alert("传来的参数:" + window.dialogArguments);
</script>


    6、返回值 通过window.returnValue向打开对话框的窗口返回信息,也可以是对象。例如:
parent.htm 
<script>
result=window.showModalDialog("son.htm","","help:no;scroll:no");
alert(result);
</script>
son.htm
<script>
window.returnValue="这里存放返回的结果";
</script>


    7、防止在模态窗口中提交后新开一窗口
   在页面的 <body>前加入<base target="_self">

    8、调用父窗口的方法同时传递参数
parent.htm 
<script>
function show(){//父窗口的方法
 alert("show");
}
var arg=new Object();//传递进去的参数
arg.win=window;//把当前窗口的引用当参数传进去
arg.str="argument";//要传进去的其他参数
window.showModalDialog("son.htm",arg,'help:no');
</script>
son.htm
<script>
var arg=window.dialogArguments;
alert(arg.str);
arg.win.show();//调用父窗口的方法
</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值