window方法:openDialog()
openDialog()方法
注意:此openDialog()方法是非标准的,不要在面向Web的生产站点上使用它:它不适用于每个用户。实现之间可能存在很大的不兼容性,并且行为可能在将来发生变化。
window.openDialog()是window.open()的一个扩展。它的行为相同,只是它可以选择性地接受一个或多个参数通过windowFeatures,并且windowFeatures本身的处理方式略有不同。
可选参数(如果存在)捆绑在JavaScript Array对象中,并作为名为window.arguments的属性添加到新创建的窗口中。它们可以随时在窗口的JavaScript中引用,包括在执行load处理程序期间。然后,可以使用这些参数来向对话窗口传递参数。
对openDialog()的调用立即返回。如果要在用户关闭对话框之前阻止调用,请将modal作为windowFeatures参数提供。请注意,这也意味着用户在关闭模式对话框之前将无法与开启窗口进行交互。
openDialog()方法语法
newWindow = openDialog(url,name,features,arg1,arg2,...)
newWindow
- 打开的窗口
url
- 要在新打开的窗口中加载的URL。
name
- 窗口名称(可选)。
features
- 详情请参考
window.open()
。 arg1
,arg2
,...- 要传递给新窗口的参数(可选)。
openDialog()方法示例
var win = openDialog("http://example.tld/zzz.xul", "dlg", "", "pizza", 6.98);
笔记
新功能
all-最初启动(或关闭("all=no"))所有chrome(除行为的标志chrome,dialog和modal)。这些可以被覆盖(因此"menubar=no,all"将打开除menubar之外的所有chrome)此功能被window.open()明确忽略。但是window.openDialog()发现它很有用,因为它有不同的默认假设。
默认行为
除非明确地关闭(” chrome=no“),否则该chrome和dialog功能总是启用的。openDialog()以与window.open()同样的方式处理缺少特征参数;也就是说,一个空字符串将所有功能设置为off;除了chrome和dialog,默认为on。如果features参数是零长度的字符串,或只包含一个或多个的行为特征(chrome,dependent,dialog和modal)chrome特征被假定为“OS的选择”。也就是说,窗口创建代码没有给出特定的指令,而是允许选择最适合该操作系统上的对话框的chrome。
将额外参数传递给对话框
要将额外的参数传递到对话框中,您只需在windowFeatures参数后面提供它们:
openDialog("http://example.tld/zzz.xul", "dlg", "", "pizza", 6.98);
然后,额外的参数将被打包到类型Array的名为argumentstype的属性中,并且此属性将添加到新打开的对话框窗口中。
要从对话框代码中访问这些额外参数,请使用以下方案:
var food = window.arguments[0];
var price = window.arguments[1];
请注意,您可以从对话框代码中的任何位置访问此属性。
从对话框返回值
由于window.close()删除了与对话框窗口关联的所有属性(即从对话框加载的JavaScript代码中指定的变量),因此无法使用全局变量(或任何其他构造)将返回值传递回关闭操作。
为了能够将值传递回调用者,您必须通过额外的参数提供一些对象。然后,您可以在对话框代码中访问此对象并在其上设置属性,其中包含要返回或保留的window.close()操作值。
var retVals = { address: null, delivery: null };
openDialog("http://example.tld/zzz.xul", "dlg", "modal", "pizza", 6.98,
retVals);
如果在对话框代码中设置retVals对象的属性,如下所述,现在可以在openDialog()调用返回后,您现在可以通过retVals数组访问它们。
在对话框代码中,您可以按如下方式设置属性:
var retVals = window.arguments[2];
retVals.address = enteredAddress;
retVals.delivery = "immediate";
规范
这不是任何规范的一部分。
浏览器兼容性部分
新的兼容性表格处于测试阶段
电脑端 | 移动端 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome
|
Edge
|
Firefox
|
Internet Explorer
|
Opera
|
Safari
|
Android webview | Chrome for Android
|
Edge Mobile | Firefox for Android
|
Opera for Android
|
iOS Safari | |
基本支持 (非标准)
|
不支持
|
? | 不支持
|
? | ? | ? | 不支持
|
不支持
|
? | 不支持
|
? | ? |
更多建议: