`
foxxiao
  • 浏览: 105816 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

模态窗口返回值

    博客分类:
  • jsp
阅读更多

没次都要查太烦!

下面先说说window.showModalDialog的基本用法

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

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

参数说明:
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中的,在一般的网页中一般不使用。
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个字符。也可以传递对象,例如:

<script>
var obj = new Object();
obj.name="ttop";
window.showModalDialog("test.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
test.htm
<script>
var obj = window.dialogArguments
alert("您传递的参数为:" + obj.name)
</script>

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

<script>
str =window.showModalDialog("test.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>
test.htm
<script>
window.returnValue="/";
</script>
一、showModalDialog和showModelessDialog有什么不同?
  showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
  showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)

二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
  在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html>和<body>之间的。

三、怎样才刷新showModalDialog和showModelessDialog里的内容?
  在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:

<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="filename.htm" style="display:none">reload...</a>

  将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target="_self">使用,不然你按下F5会弹出新窗口的。

四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
  <input type="button" value="关闭" onclick="window.close()">
  也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。

五、showModalDialog和showModelessDialog数据传递技巧。
  (作者语:本来想用一问一答形式来写的,但是我想不出这个怎么问,所以只好这样了。)
  这个东西比较麻烦,我改了好几次了不是没办法说明白(语文水平越来越差了),只好用个例子说明了。
  例子:
    现在需要在一个showModalDialog(或showModelessDialog)里读取或设置一个变量var_name

      一般的传递方式:
        window.showModalDialog("filename.htm",var_name)
        //传递var_name变量
      在showModalDialog(或showModelessDialog)读取和设置时:
        alert(window.dialogArguments)//读取var_name变量
        window.dialogArguments="oyiboy"//设置var_name变量
    这种方式是可以满足的,但是当你想在操作var_name同时再操作第二个变理var_id时呢?就无法再进行操作了。这就是这种传递方式的局限性。
    
      以下是我建议使用的传递方式:
        window.showModalDialog("filename.htm",window)
        //不管要操作什么变量,只直传递主窗口的window对象
      在showModalDialog(或showModelessDialog)读取和设置时:
        alert(window.dialogArguments.var_name)//读取var_name变量
        window.dialogArguments.var_name="oyiboy"//设置var_name变量

        同时我也可以操作var_id变量
        alert(window.dialogArguments.var_id)//读取var_id变量
        window.dialogArguments.var_id="001"//设置var_id变量

        同样还可以对主窗口的任何对象进行操作,如form对象里的元素。
        window.dialogArguments.form1.index1.value="这是在设置index1元素的值"

在父页面中用onClick=""var reVal = window.showModalDialog('changephoto.htm','dialogWidth:500px;dialogHeight:300px;help:no');if (typeof(reVal) != 'undefined') {form.textname.value=reVal;}"" style=""cursor:hand "">点击这里修改图片

在字窗口'changephoto.htm'中打开一个框架集,框架集中包含一个asp文件,先将asp的值返回到changephoto.htm中 再将这个值返回到主页面中

changephoto.htm: <input type=button onclick="onClose();" value=" 关 闭 ">

function onClose() { window.returnValue = form1.save.value;//也可以将window.returnValue改成window.dialogArguments.oblogform.blogimage.value window.close(); }

asp文件:parent.document.form1.save.value ="值或变量";

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liang4571231/archive/2009/04/24/4105712.aspx

分享到:
评论

相关推荐

    模态窗口 跨域获取返回值

    A站通过模态窗口打开B站,同时能够跨域获取返回值,亲测可用 基于IFRAME的多层嵌套实现

    JS模态窗口返回值兼容问题的完美解决方法

    下面小编就为大家带来一篇JS模态窗口返回值兼容问题的完美解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    使用div仿javascript模态窗口

    使用div仿javascript模态窗口,感觉很不错的资源哦。喜欢的朋友可以下载下

    C#WinForm获取子窗口返回值

    C#WinForm获取子窗口返回值 及窗口取消的处理

    javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码

    .href, “__self”) //注意是2个下划线 替换 location.href 当需要关闭第N(N&gt;1)层的模态窗口,并刷新第N-1层的模态页面时, 为防止刷新时弹出新窗口, 可以通过returnValue 以传递返回值给第N-1层模态窗口,来确认是否...

    asp.net弹出窗口 返回值

    Page.aspx: 代码如下:&lt;...&lt;head runat=”server”&gt;&lt;title&gt;无标题页&lt;/title&gt;[removed]…function Pop() …{ var result=showModalDialog(‘downs.aspx’,’subpage... //打开模态子窗体,并获取返回值d

    简单好用的JS 弹出层代码

    非常简单好用的JS弹出层, 支持模态窗口 支持弹出层嵌套 支持返回值

    VC6.0模拟实现模态对话框.rar

    VC 6.0模拟实现模态对话框,一般情况下的窗口都是基于此方式 ,当然也有非模态对话框,本款模态对话框,实现要点如下:  void MyDialog::OnButton1() //确定按钮  {   CDialog::OnOK();//调用OnOK()函数退出...

    C#实现父子窗体全传值案例

    通过window.showModalDialog实现模态窗体,并将返回值回写父窗体

    jquery 仿Div模态弹出窗插件

    内容索引:脚本资源,jQuery,弹出窗口,jQuery插件 jquery 仿Div模态弹出窗插件,功能类似一些大型博客站点里的模板选择功能,点击文字后,会弹出一个DIV层,里面含有多种风格模板可以选择,点击后即可立即显示该 模板...

    Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法

    在测试与各个浏览器兼容性的时候,发现在chrome浏览器下showModalDialog方法显示的并不是模态对话框,就像新打开一个页面一样,父窗口仍然可以随意获取焦点,并可以打开多个窗体,而且返回值returnValue也无法返回,...

    PT80-NEAT开发指南v1.1

    框架窗口 ............................................................................................................................................... 19 完整的例子 ....................................

    JavaScript中window.showModalDialog()用法详解

    一个是window.showModalDialog()方法,后者是存在父子关系的一种弹出窗口,只有子窗关闭,父窗口才激活,并且可以传送参数和返回值。正好又温习一遍用法,顺便在此记录过程中遇到的问题。 基本介绍:  ...

    Visual Basic 2010入门经典.part1.rar

    6.2 创建位于最前面的非模态窗口 109 6.3 创建透明窗体 109 6.4 创建可滚动窗体 110 6.5 创建多文档界面 111 6.6 设置启动窗体 113 6.7 总结 114 6.8 问与答 114 6.9 作业 114 6.9.1 测验 114 6.9.2 答案 ...

    Visual Basic 2010入门经典.part2.rar

    6.2 创建位于最前面的非模态窗口 109 6.3 创建透明窗体 109 6.4 创建可滚动窗体 110 6.5 创建多文档界面 111 6.6 设置启动窗体 113 6.7 总结 114 6.8 问与答 114 6.9 作业 114 6.9.1 测验 114 6.9.2 答案 ...

    Lotus公式语言函数简介

    @PickList 显示一个模态窗口, 某个视图或地址对话框 @Platform 返回当前 Notes 运行的平台版本 @PostedCommand 执行一条 Notes 命令 @Power 求一个数的幂值 @Prompt 显示一个对话框,并根据用户的操作返回一个文本值...

    Delphi 5编程实例与技巧

    3.12.7 设置模态对话框的返回值 90 3.12.8 使用事件处理过程中的Sender 参数 91 3.12.9 为控件生成多行提示信息 91 3.12.10 生成非矩形窗口 92 3.12.11 移动无标题栏窗口 94 3.12.12 制作动态字幕 95 3.12.13 在窗体...

    ios开发记录

    状态栏20键盘高度216导航44 最少2位 补0 // UIColor *color2 = [[UIColor alloc] initWithRed:0 green:1 blue:0 alpha:1]; // button setTitle:@"点我吧" forState:UIControlStateNormal]; // [button addTarget:...

Global site tag (gtag.js) - Google Analytics