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
基本支持
(非标准)
不支持
?
不支持
?
?
?
不支持
不支持
?
不支持
?
?