window方法:openDialog()

2018-08-24 14:53 更新

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()
arg1arg2,...
要传递给新窗口的参数(可选)。

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
基本支持
(非标准)
不支持
不支持
不支持
不支持
不支持
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号