有关showModalDialog和window.open
(2007-07-05 14:17:05)
<script></script>标签:
window.open模式窗口 |
分类: Study ing |
原本以为这俩差不多,但是要是一样,人家干吗非弄俩啊?终于还是实践是检验真理的唯一标准,小经验分享一下。
一。。window.open
oNewWindow = window.open( [sURL] [, sName] [, sFeatures] [, bReplace])
1。sURL :新打开窗口的url地址,如果没有则默认打开一个空白页。
2。sName:参数表:_blank 打开的窗口将在一个新的窗口中打开。
_media 打开的地址将在Media工具栏中打开
_parent将在当前页的父页面打开,如果当前也没有父页面,则在默认为_self. _search 此属性在微软5.0浏览器以上版本中的搜索兰中打开。
_self 将在本页面打开。
_top 将代替所有的Framesets,如果没有framesets,默认为_self。
参数 | 取值范围 | 说明
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 | 窗口被激活后是否浮在其它窗口之上
?
4。bReplac
此属性运用在新打开的url地址在本窗口。
true:url代替当前文档在历史的列表中。
false:在历史列表中创建一个新的输入。
二。showModalDialog
有关用showModalDialog打开一个窗口,跟window.open 大同小异,举个例子,一幕了然。
.window.showModalDialog("DialogPage.aspx","newwin","dialogHeight: 200px; dialogWidth: 150px; dialogTop: 458px; dialogLeft: 166px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;");
三。区别
用window.open打开新的窗口,父窗口可以被随时激活,但是用showModalDialog打开的新窗口,必须对其进行了处理,父窗口才能被继续使用。二者都可以用returnValue设置在父窗口得到子窗口的返回值。
四。注意!!!
1。showModalDialog对某些javascrite事件进行了禁用。
我只遇到过超链接中的href是不支持的,但是window.open就绝对没有问题。
2。用aspx页面在showmodeldialog情况下会打开一个新的窗口,解决如下:打开的页面中在<head></head>之间加入三行:<base target="_self">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache,must-revalidate">
3。使用F5刷新页面
<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="<%=Request.Url%>" style="display:none"></a>
4。突然还发现一些通过showModalDialog传值的方法,比window.open 要好,不过没有试过:
父页面:<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="<%=Request.Url%>" style="display:none"></a>
window.showModalDialog(url,aInfo,sFeatures);
子页面:<script language="JavaScript">
<!--
//获取父窗口传来的对象(本例中就是父页面中的“oInfo”数组对象,也可用“window”对象,以便对父页面进行操作。总之,只要是object类型就成。)
var args = window.dialogArguments;
if(args!=null){
?//document.write(args);
?for(var i=0;i<args.length;i++){
? document.writeln(args[i]+" "+(i+1)*10);
?}
}else{
?document.writeln("对不起,参数为空");
}