javascript showModalDialog,open取得父窗口的方法
通常使用window.open的方式开启新窗口的话 要取得父窗口的控件,可以用window.opener来取得父窗口 然而如果使用showModalDialog的话…却无效 如果有需要的话,需要修改开启的语法以及showModalDialog中的语法 开启语法第2个参数请下self,范例如下 var rc=window.showModalDialog(strURL,self,sFeatures); 然后接着就是呼叫父窗口的语法 var pWindow=window.dialogArguments; 这样就可以取得父窗口的window对象控制了。例如: window.dialogArgument 在JavaScript中,打开新窗口的方法主要有两种:`window.open()` 和 `window.showModalDialog()`. 这两者在处理与父窗口交互时有所不同。本篇文章主要探讨如何在使用`showModalDialog`时获取父窗口的方法。 让我们了解`window.open()`。当你使用`window.open(url, name, features)`打开新窗口时,新窗口可以通过`window.opener`属性来访问其父窗口。例如,如果A页面使用`window.open()`打开B页面,那么在B页面中,你可以通过`window.opener`来访问A页面的任何公共属性和方法,包括修改A页面的DOM元素。 然而,对于`window.showModalDialog()`情况就有所不同。`showModalDialog()`用于打开一个模态对话框,它会阻塞父窗口直到对话框关闭。当使用`showModalDialog(url, arg, features)`时,第二个参数`arg`允许你传递数据到新打开的对话框,而不是像`window.open()`那样通过`window.opener`访问父窗口。如果需要在模态对话框中获取父窗口的信息,你需要在调用`showModalDialog`时,将`self`作为第二个参数,如下所示: ```javascript var rc = window.showModalDialog(strURL, self, sFeatures); ``` 这样,你就可以通过`window.dialogArguments`来访问父窗口传递的数据,而不是父窗口的`window`对象。例如,如果你想获取父窗口中名为"processId"的输入字段的值,你可以这样做: ```javascript var pWindow = window.dialogArguments; var processIdValue = pWindow.document.getElementsByName("processId")[0].value; ``` 这里,`pWindow`不是父窗口的`window`对象,而是对话框被打开时传递的参数对象,所以不能直接用来访问父窗口的DOM元素。 需要注意的是,`window.opener`和`window.parent`这两个属性在JavaScript中的作用不同。`window.parent`是指当前窗口在框架集中的父窗口,如果当前窗口没有嵌套在其他窗口中,`window.parent`就是指向自身。而`window.opener`则只适用于`window.open()`的情况,表示打开当前窗口的源窗口。 如果尝试访问`window.opener`而该引用失效(例如,用户已经关闭了父窗口),则`window.opener`将返回`null`。在使用`window.opener`之前,应检查其是否为`null`,以避免因尝试访问不存在的对象而引发的JavaScript错误。 举个例子,如果你有一个页面`back2opener.html`,你想在新打开的对话框中输入数据并将其返回给父窗口,你可以使用`window.showModalDialog`并在对话框中设置一个提交按钮,当点击按钮时,将数据通过`window.returnValue`返回给父窗口: ```javascript // 在对话框页面的脚本中 function submitData() { var inputData = document.getElementsByName("inpu")[0].value; window.returnValue = inputData; // 设置返回值 window.close(); // 关闭对话框 } ``` 然后在父窗口中,你可以捕获返回的值并更新相应元素: ```javascript var result = window.showModalDialog("dialog.html", self, "dialogWidth:400px;dialogHeight:300px;"); if (result !== null) { document.getElementById("name").value = result; } ``` 总结来说,`window.showModalDialog()`提供了一种不同方式来与父窗口交互,主要通过`dialogArguments`传递数据,而不是像`window.open()`那样使用`window.opener`。理解这些差异对于正确地在JavaScript中处理窗口间的通信至关重要。
- 粉丝: 3
- 资源: 903
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 集装箱吊车门机起重机电气电器图纸一套这是调试后的最终版图纸,含程序,元件清单,集装箱的,供学习参考用,这是电气图纸,没有机械的 plc是315-2dp,行车图纸有很多,串电阻的,各种变频,plc通讯
- 用html表单元素画的一棵旋转圣诞树
- 本地磁盘随意学习提供使用
- 职业与睡眠健康.zip
- 本地磁盘随意学习提供使用
- 墙外unity下载报错,版本2021.3.1f1
- 基于支持向量机(SVM)的手写字母识别 matlab代码
- Cursor安装包,想学习的Cursor可以免费使用
- Yealink VC Desktop1.28.0.72, 免费,局域网,IP电话, SIP, VOIP, 视频通话,可与手机互通,手机上也安装 yealink, apk包
- 日常业务完整版.pdf
- 基于S7-200 PLC和组态王组态切片机控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- 全自动热封冷切制袋机x_t全套技术开发资料100%好用.zip
- CSDN项目管理系统 2024-11-01T15-51-11+011800.html
- 12.27ppt.zip
- FURIN Promoter 甲基化水平预测糖尿病.zip
- 热水壶自动ZN-Q5卷边机sw14可编辑全套技术开发资料100%好用.zip
评论0