深圳万博培训
     新闻动态
媒体报导
重要通告
学习园地
     OFFICE培训系列
  Excel2003管理高级应用
  Excel2003财务高级应用
  EXCEL中的VBA开发与应用
  ACCESS 2003 设计开发
  OutLook2003高级应用
  PPT2003高级应用
  Office2007中文版
  计算机应用能力考前培训
  MS Project2007培训
  Visio2003图形设计
     国家软考培训系列
  网络工程师(中级职称)
  网络管理员(初级)
  电子商务技术员(初级)
  信息处理技术员(初级)
  程序员(初级职称)
  数据库系统工程师(中)
  电子商务设计师(中级)
  软件设计师(中级)
     数据库培训
  SQL2005数据库
  SQL2000数据库
  Oracle 10g数据库
     1+6网络工程师
  1+6网络工程师
     网络技术(单科)
  软考网络工程师
  Cisco CCNA 认证
  局域网组建和维护
  网络安全
  LINUX网络服务和管理
  Windows2003服务器
     网站运营工程师
  网络营销及网站优化
  网页设计
  photoshopCS3图像处理
  PHP培训课程
  Flash应用与设计
  dreamweaverCS3网页设计
     招生咨询服务
  电话:0755-22205758
     0755-83648016
 

强悍showModalDialog函数


2009年4月23日 作者: 来源:

程序代码
function openEgg(type){
    window.showModalDialog('../EggPlay.aspx?type='+type,'','dialogHeight: 600px; dialogWidth: 800px; edge: Raised; center: Yes; help: No; resizable: No; status: No;scroll:No;');
}

 

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>
<body>
<form>
<input value="返回" type=button onclick="sendTo()">
</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="/blog/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里是可以的。


阅读:501 上一则:Javascript自动跳到最快的服务器 下一则:Google 公开测试 Analytics API:桌面版 Google Analytics 即将成为现实

返回前页 返回顶部
地址:深圳罗湖区笋岗东路3002号万通大厦1311室(帝豪酒店站下) 热线:0755-22205758(罗湖) 0755-83648016(福田)
客服信箱:shizgqh16@163.com 统计报告   版权所有:深圳万博计算机教育  粤ICP备05121393号 design by:eOneStudio
 
欢迎咨询!
您好!我是史老师,很高兴为您在线答疑!
深圳万博史老师
您好!我是吴老师,很高兴为您在线答疑!
深圳万博吴老师