开发中经常遇到这样的问题:需要在一个页面里打开另外的页面(模态,或者非模态)。
见过很多这样的例子,另外还有页面间需要传递参数的,大部分都是采用地址栏参数拼接的形式。这很显然是一个不好的编程习惯,每次需要增加参数的时候都要面对那段可恶的参数拼接,经常出错。特别是最后一个参数如果是空串的话,容易产生下标越界的错误(因为split后,数组根本不会动态分配存储空间),所以一般需要增加额外的保护变量(一个与参数无关的变量),保证数组的内容如自己想的一样。
这个时候,窗口自带的属性dialogArguments还是比较强大的,代码上有些改观,但是拆数据的时候还是得很小心,否则还是会出错的:
找来的一段代码,或许能很好的说明这一点:
Retrieves the variable or array of variables passed into the modal dialog window.
dhtml语法
[ vVariables = ] window.dialogArguments
DHTML可能的值
vVariables String, numeric, object, or array value that specifies arguments. The property is read-only. The property has no default value.
Remarks
The dialogArguments property applies only to windows created using the showmodaldialog and showmodelessdialog methods.
Examples
The following example shows how to retrieve information passed into a modal dialog window using the dialogArguments property. This example consists of two snippets of code, which correspond to two different files. One file launches the modal window and the other file stores the code for the modal window.
This file launches the modal window and sends an object to that modal window.
<HTML> <HEAD> <SCRIPT> function fnLaunch() { var aForm; aForm = oForm.elements; var myObject = new Object(); myObject.firstName = aForm.oFirstName.value; myObject.lastName = aForm.oLastName.value; // The object "myObject" is sent to the modal window. window.showModalDialog("modalDialogSource.htm", myObject, "dialogHeight:300px; dialogLeft:200px;"); } </SCRIPT> </HEAD> <BODY> <BUTTON onclick="fnLaunch();" >Launch The Window</BUTTON> <FORM ID= "oForm"> First Name: <INPUT TYPE="text" NAME="oFirstName" VALUE="Jane"> <BR> Last Name: <INPUT TYPE="text" NAME="oLastName" VALUE="Smith"> </FORM> </BODY> </HTML>This file (modalDialogSource.htm), stores the code for the modal window. The object sent to this modal window is retrieved using the dialogArguments property.
<HTML> <HEAD> <SCRIPT> var oMyObject = window.dialogArguments; var sFirstName = oMyObject.firstName; var sLastName = oMyObject.lastName; </SCRIPT> <title>Untitled</title> </head> <BODY STYLE="font-family: arial; font-size: 14pt; color: Snow; background-color: RosyBrown;"> First Name: <SPAN STYLE="color:00ff7f"> <SCRIPT> document.write(sFirstName); </SCRIPT> </SPAN> <BR> Last Name: <SPAN STYLE="color:00ff7f"> <SCRIPT> document.write(sLastName); </SCRIPT> </SPAN> </BODY> </HTML>
相关推荐
### showModalDialog及dialogArguments使用详解 在Web开发中,`showModalDialog` 和 `showModelessDialog` 是Internet Explorer浏览器特有的方法,用于打开模态或非模态对话框。这两个函数允许开发者创建自定义的弹...
然而,这种模式化窗口在不同浏览器之间存在兼容性问题,尤其在Firefox中,`window.dialogArguments`对象在页面跳转后可能会丢失,这是在开发中遇到的常见问题。 首先,我们来探讨一下如何使用`window....
`window.dialogArguments` 是一个在旧版的IE浏览器(Internet Explorer)中特有的JavaScript对象,它主要用于在模态对话框(`showModalDialog()`)和无模态对话框(`showModelessDialog()`)之间传递数据。...
This is a `window.showModalDialog()` shim using a modal HTML5 `<dialog>` element and ECMAScript 6 Generators. It was tested in the latest Google Chrome with the *Enable Experimental JavaScript* flag ...
通常,`showModalDialog`或`showModelessDialog`通过`dialogArguments`参数传递数据: ```javascript window.showModalDialog("filename.htm", var_name); ``` 在对话框内,可以访问和修改`dialogArguments`: ``...
3> IE与FireFox对两个弹出窗口在跨域时的解析也有不同:通过window.dialogArguments操作父窗口时,在IE下不需要指定document.domain而在FireFox下则正好相反需要指定才能生效;采用opener方式操作父窗口时都不需要...
在对话框页面中,这些参数可以通过`window.dialogArguments`全局变量访问。这是一个对象,所以可以传递多个值,比如: ```javascript window.showModalDialog('dialog.html', {name: 'John', age: 30}, '...
对话框通过`window.dialogArguments`访问这些参数。 - `sFeatures`:可选参数,字符串类型,定义对话框的外观和行为,例如大小、位置、是否有滚动条等。可以通过分号分隔多个特性。 `sFeatures`参数的一些常见选项...
如果存在`window.dialogArguments`对象,说明当前页面是子页面,因此我们将`openobj`设置为`window.dialogArguments`。然后调用`showPopWin`函数打开子窗口,并处理返回值。如果子窗口返回了值,我们将这个值赋给父...
例如,可以在父窗口中传递一个对象,然后在对话框中通过`window.dialogArguments`访问并使用这些数据。下面的代码示例展示了如何将父窗口对象传递给子窗口,并在子窗口中获取和操作父窗口的元素: ```html // 父...
- `dialogArguments`: 可选,对话框接收的变量,可以是任何JavaScript值,它会被传递给对话框的`window.dialogArguments`属性。 - `options`: 可选,对话框的样式和行为,可以包括宽度、高度、位置等,也可以包含`...
因系统要兼容原IE已使用的关闭方法,经调试测得,需对window.dialogArguments进行再较验,不然易出问题。 function OKEnd(vals) { if (vals == null) vals = TRUE; if (typeof (window.opener) == undefined) { ...
在打开模态窗口时可以传递参数,这些参数可以在模态窗口内部通过`window.dialogArguments`对象获取。 例如,在父页面中: ```javascript window.showModalDialog("DialogPage.aspx?para1=aaa¶2=bbb"); ``` 在...
- `dialogArguments`:可选参数,传递给新窗口的数据,通常是一个字符串,也可以是对象,通过`window.dialogArguments`在新窗口中访问。 - `features`:可选参数,用来设置对话框的外观和行为,如宽度、高度、位置等...
2. **dialogArguments**(可选):这是传递给对话框窗口的参数,它可以通过`window.dialogArguments`在对话框内部访问。这允许你向对话框传递数据,例如初始化值或配置信息。 3. **features**(可选):这是一个...
关于参数传递,`showDialog`允许我们通过URL查询字符串或者在对话框内部通过`window.dialogArguments`来传递数据。例如,如果我们想将一个名为`id`的参数传递给对话框,可以在URL中添加`"?id=123"`。在对话框页面中...
var opener = window.dialogArguments; var FlowXML = opener.document.all.FlowXML; var xmlDoc = new ActiveXObject('MSXML2.DOMDocument'); xmlDoc.async = false; xmlDoc.loadXML(FlowXML.value); var...