浅谈JavaScript窗体Window.ShowModalDialog使用


Posted in Javascript onJuly 22, 2020

Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:

showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)

window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。

window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

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

使用方法如下:

vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])

参数说明:

sURL
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
dialogHeight 对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
  dialogWidth: 对话框宽度。
  dialogLeft: 距离桌面左的距离。
  dialogTop: 离桌面上的距离。
  center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
  help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
  resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
  status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。

还有几个属性是用在HTA中的,在一般的网页中一般不使用。
dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

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

test1.htm

<script>
var mxh1 = new Array("mxh","net_lover","孟子E章")
var mxh2 = window.open("about:blank","window_mxh")
// 向对话框传递数组
window.showModalDialog("test2.htm",mxh1)
// 向对话框传递window对象
window.showModalDialog("test3.htm",mxh2)
</script>

test2.htm

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

test3.htm

<script>
var a = window.dialogArguments
alert("您传递的参数为window对象,名称:" + a.name)
</script>

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

test4.htm

<script>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) alert(a[i])
</script>

test5.htm

<script>
function sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
</script>

<form>
<input value="返回" type=button>
</form>

常见问题:

1,如何在模态对话框中进行提交而不新开窗口?
如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作。例如:

test6.htm

<script>
window.showModalDialog("test7.htm")
</script> test7.htm
if(window.location.search) alert(window.location.search)
<frameset rows="0,*">
<frame src="about:blank">
<frame src="test8.htm">
</frameset> test8.htm
<form target="_self" method="get">
<input name=txt value="test">
<input type=submit>
</form>
<script>
if(window.location.search) alert(window.location.search)
</script>

2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗?
答案是不能。但在frame里是可以的

到此这篇关于浅谈JavaScript窗体Window.ShowModalDialog使用的文章就介绍到这了,更多相关JavaScript窗体Window.ShowModalDialog内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js动态生成指定行数的表格
Jul 11 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 #Javascript
vue props 一次传多个值实例
Jul 22 #Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
Jul 22 #Javascript
详谈vue中router-link和传统a链接的区别
Jul 22 #Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 #Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
Jul 22 #Javascript
vue页面跳转实现页面缓存操作
Jul 22 #Javascript
You might like
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
python 计算文件的md5值实例
2017/01/13 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
我的中国梦口号
2014/06/16 职场文书
化工实习心得体会
2014/09/09 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
详解在OpenCV中如何使用图像像素
2022/03/03 Python
Mysql中常用的join连接方式
2022/05/11 MySQL