window.open 与 window.showModelDialog(转)

常用弹出窗口-window.showModalDialog与window.open 用法
文章分类:Web前端
windows.open()用法简介
一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+
二、基本语法:
Java代码

1. window.open(pageURL,name,parameters)
2. 其中:
3. pageURL 为子窗口路径
4. name 为子窗口句柄
5. parameters 为窗口参数(各参数用逗号分隔)

window.open(pageURL,name,parameters)
其中:
pageURL 为子窗口路径
name 为子窗口句柄
parameters 为窗口参数(各参数用逗号分隔)


三、示例:
Java代码

1. <SCRIPT>
2. <!--
3. window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
4. //写成一行
5. -->
6. </SCRIPT>

<SCRIPT>
<!--
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
//写成一行
-->
</SCRIPT>


脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。
请对照。
上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。
四、各项参数
Java代码

1. 其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。
2. 参数 | 取值范围 | 说明
3. | |
4. alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后
5. alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上
6. depended | yes/no | 是否和父窗口同时关闭
7. directories | yes/no | Nav2和3的目录栏是否可见
8. height | pixel value | 窗口高度
9. hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键
10. innerHeight | pixel value | 窗口中文档的像素高度
11. innerWidth | pixel value | 窗口中文档的像素宽度
12. location | yes/no | 位置栏是否可见
13. menubar | yes/no | 菜单栏是否可见
14. outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度
15. outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度
16. resizable | yes/no | 窗口大小是否可调整
17. screenX | pixel value | 窗口距屏幕左边界的像素长度
18. screenY | pixel value | 窗口距屏幕上边界的像素长度
19. scrollbars | yes/no | 窗口是否可有滚动栏
20. titlebar | yes/no | 窗口题目栏是否可见
21. toolbar | yes/no | 窗口工具栏是否可见
22. Width | pixel value | 窗口的像素宽度
23. z-look | yes/no | 窗口被激活后是否浮在其它窗口之上

其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。
参数 | 取值范围 | 说明
| |
alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后
alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上
depended | yes/no | 是否和父窗口同时关闭
directories | yes/no | Nav2和3的目录栏是否可见
height | pixel value | 窗口高度
hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键
innerHeight | pixel value | 窗口中文档的像素高度
innerWidth | pixel value | 窗口中文档的像素宽度
location | yes/no | 位置栏是否可见
menubar | yes/no | 菜单栏是否可见
outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度
outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度
resizable | yes/no | 窗口大小是否可调整
screenX | pixel value | 窗口距屏幕左边界的像素长度
screenY | pixel value | 窗口距屏幕上边界的像素长度
scrollbars | yes/no | 窗口是否可有滚动栏
titlebar | yes/no | 窗口题目栏是否可见
toolbar | yes/no | 窗口工具栏是否可见
Width | pixel value | 窗口的像素宽度
z-look | yes/no | 窗口被激活后是否浮在其它窗口之上


window.showModalDialog使用手册
基本介绍:
Java代码

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

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


使用方法:
Java代码

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

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


参数说明:
Java代码

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

sURL--
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
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中的,在一般的网页中一般不使用。
Java代码

1. 10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
2. 11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
3. 12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

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个字符。也可以传递对象,例如:
Java代码

1. -------------------------------
2. parent.htm
3. <script>
4. var obj = new Object();
5. obj.name="51js";
6. window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
7. </script>
8. modal.htm
9. <script>
10. var obj = window.dialogArguments
11. alert("您传递的参数为:" + obj.name)
12. </script>
13. -------------------------------

-------------------------------
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向打开对话框的窗口返回信息,当然也可以是对象。例如:
Java代码

1. ------------------------------
2. parent.htm
3. <script>
4. str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
5. alert(str);
6. </script>
7. modal.htm
8. <script>
9. window.returnValue="str";
10. </script>

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


windows.showModalDialog实例
实现功能简介:在parent.aspx点击图片gorup.gif便会弹出Group.aspx窗口,在此页面的dataGrid控件中双击某一行数据,就会将这一行的"组合名称"列的值填充到parent.aspx页面的txtGoup文本框中。代码如下:
Java代码

1. parent。aspx 的html代码:
2. //
3. <IMG src="images\gorup.gif" οnclick=getGroup(document.all.txtGroup); style="CURSOR: hand" alt=请选择组合 >
4. <script>
5. function getGroup(obj)
6. {
7. var valu=window.showModalDialog('Group.aspx',window,'dialogWidth=700px;dialogHeight=500px;status=no');
8. var str;
9. str="document.all." + obj.id;
10. if (valu!==""&&valu!==undefined){eval(str).value=valu;}
11. }
12. </script>
13. Group.aspx的html代码:
14. <script language=javascript>
15. function returnSelect(sel)
16. {
17. window.returnValue=sel;
18. window.close();
19. }
20. </script>
21. Group.aspx的cs代码:
22. private void dgGroup_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
23. {
24. if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item )
25. {
26. e.Item.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#9CCBF7';this.style.cursor='hand'");
27. e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
28. DataRowView drv = (DataRowView)e.Item.DataItem;
29. e.Item.Attributes.Add("ondblclick","returnSelect('" + drv.Row["Name"].ToString() +"');");

parent。aspx 的html代码:
//
<IMG src="images\gorup.gif" οnclick=getGroup(document.all.txtGroup); style="CURSOR: hand" alt=请选择组合 >
<script>
function getGroup(obj)
{
var valu=window.showModalDialog('Group.aspx',window,'dialogWidth=700px;dialogHeight=500px;status=no');
var str;
str="document.all." + obj.id;
if (valu!==""&&valu!==undefined){eval(str).value=valu;}
}
</script>
Group.aspx的html代码:
<script language=javascript>
function returnSelect(sel)
{
window.returnValue=sel;
window.close();
}
</script>
Group.aspx的cs代码:
private void dgGroup_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item )
{
e.Item.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#9CCBF7';this.style.cursor='hand'");
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
DataRowView drv = (DataRowView)e.Item.DataItem;
e.Item.Attributes.Add("ondblclick","returnSelect('" + drv.Row["Name"].ToString() +"');");


防止aspx页面在showmodeldialog情况下提交就重新打开一个页面:showmodaldialog打开的页面中在<head></head>之间加入一行:<base target="_self">


如何禁止模态窗口左侧的滚动栏?

解决如下:
方法是在模态页面的BODY样式加:OVERFLOW: hidden; 即可禁止显示.

Java代码

1. BODY {
2. OVERFLOW: hidden; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: #ffffff; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; WIDTH: 100%; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
3. }

BODY {
OVERFLOW: hidden; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: #ffffff; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; WIDTH: 100%; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}


什么是模态窗口?什么是非模态窗口?

答案如下:
模态窗口在传统编程语言中很常见,就是打开一个子窗口,如果这个子窗口不关闭,就不能操作它的父窗口。
当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值