window.showModalDialog 打开的窗口没有 opener 对象
2012-11-26 15:45
274 查看
使用 window.showModalDialog 打开的窗口没有 opener 对象, 这的确给使用带来了很多麻烦, 以前一直也没用过这个东西, 所以没有更多关注. 今天一个朋友问到这个问题, 于是上网搜索了一下, 找到了解决方案, 发上来供大家参考.
首先来看看 window.showModalDialog 的参数
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) ;
sURL : 打开窗口的地址;
vArguments : 传递参数;
sFeatures : 窗口属性列表;
第一个参数是必须的, 后两个可以省略.
这里我们要利用的就是第二个参数. 原理是将父窗口的被控制对象以参数的形式传递到子窗口, 在子窗口中直接控制这个对象即可.
举例来说:
parent.html
child.html
运行 parent.html , 单击 [打开] 按钮弹出对话框, 点击 Send 链接将值传递到 parent 的文本框中.
传递的参数当然也可以是其他对象, 例如 window . 值得注意的是传递的是对象, 而不是字符串.
window.showModalDialog 打开的子窗口,不支持 window.opener 属性
获取父窗口,需要显示作为参数传入
// a.aspx
window.showModalDialog("b.aspx", window);
// b.aspx
var
theOpener = window.dialogArguments;
theOpener.close();
// 对于内嵌
c.aspx ->
var outerOpener = window.top.dialogArguments;
outerOpener.close();
首先来看看 window.showModalDialog 的参数
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]) ;
sURL : 打开窗口的地址;
vArguments : 传递参数;
sFeatures : 窗口属性列表;
第一个参数是必须的, 后两个可以省略.
这里我们要利用的就是第二个参数. 原理是将父窗口的被控制对象以参数的形式传递到子窗口, 在子窗口中直接控制这个对象即可.
举例来说:
parent.html
<script type="text/javascript"> function openWin(){ // 子窗口地址 var srcFile = "child.html"; // 子窗口属性 var winFeatures = "dialogHeight:300px; dialogLeft:200px;"; // 将 From 的 ID 作为参数传递到子窗口 var obj = getForm; // 打开子窗口 window.showModalDialog(srcFile, obj, winFeatures); } </script> <form id="getForm"> 回传值: <input id="getValue" type="text" /> </form> <input onclick="openWin()" type="button" value="打开" />
child.html
<script type="text/javascript"><!-- function send(){ // 获取参数传递的对象 var obj = window.dialogArguments; // 控制对象 obj.getValue.value = 'from Child'; } // --></script> <a onclick="send();" href="#">Send</a>
运行 parent.html , 单击 [打开] 按钮弹出对话框, 点击 Send 链接将值传递到 parent 的文本框中.
传递的参数当然也可以是其他对象, 例如 window . 值得注意的是传递的是对象, 而不是字符串.
window.showModalDialog 打开的子窗口,不支持 window.opener 属性
获取父窗口,需要显示作为参数传入
// a.aspx
window.showModalDialog("b.aspx", window);
// b.aspx
var
theOpener = window.dialogArguments;
theOpener.close();
// 对于内嵌
c.aspx ->
var outerOpener = window.top.dialogArguments;
outerOpener.close();
相关文章推荐
- window.showModalDialog 弹出窗口获取父窗口对象 详解
- 使用BOM 的window对象属性打开新窗口
- Extjs中如何关闭parent对象窗口打开的window对象
- window.showModalDialog打开模态窗口父子页面间对话
- 错误:用脚本window.showModalDialog打开的页面,点击button时打开新窗口
- Extjs中如何关闭parent对象窗口打开的window对象
- Extjs中如何关闭parent对象窗口打开的window对象
- 打开窗口并传值(window.showModalDialog)
- Extjs中如何关闭parent对象窗口打开的window对象
- window对象提供的功能之打开新窗口
- JS窗口问题处理:使弹出窗口保持前端显示的几种方法,及window窗体对象open()和showModalDialog()用法
- JS窗口问题处理:使弹出窗口保持前端显示的几种方法,及window窗体对象open()和showModalDialog()用法
- Extjs中如何关闭parent对象窗口打开的window对象
- Example001使用window对象打开窗口
- window.open()打开的窗口用window.opener()在chrome浏览器下失败的原因
- js定义父类窗口,接收子窗口返回的内容,window.opener.document取得父类窗口的对象.html
- JS窗口问题处理:使弹出窗口保持前端显示的几种方法,及window窗体对象open()和showModalDialog()用法
- 如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口
- opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
- Chrome调试本地文件无法使用window.opener对象进行窗口间值传递