window方法:openDialog()

2018-08-24 14:53 更新

openDialog()方法

注意:此openDialog()方法是非標(biāo)準(zhǔn)的,不要在面向Web的生產(chǎn)站點上使用它:它不適用于每個用戶。實現(xiàn)之間可能存在很大的不兼容性,并且行為可能在將來發(fā)生變化。

window.openDialog()是window.open()的一個擴展。它的行為相同,只是它可以選擇性地接受一個或多個參數(shù)通過windowFeatures,并且windowFeatures本身的處理方式略有不同。

可選參數(shù)(如果存在)捆綁在JavaScript Array對象中,并作為名為window.arguments的屬性添加到新創(chuàng)建的窗口中。它們可以隨時在窗口的JavaScript中引用,包括在執(zhí)行l(wèi)oad處理程序期間。然后,可以使用這些參數(shù)來向?qū)υ挻翱趥鬟f參數(shù)。

對openDialog()的調(diào)用立即返回。如果要在用戶關(guān)閉對話框之前阻止調(diào)用,請將modal作為windowFeatures參數(shù)提供。請注意,這也意味著用戶在關(guān)閉模式對話框之前將無法與開啟窗口進行交互。

openDialog()方法語法

newWindow = openDialog(url,name,features,arg1,arg2,...)
newWindow
打開的窗口
url
要在新打開的窗口中加載的URL。
name
窗口名稱(可選)。
features
詳情請參考window.open()。
arg1,arg2,...
要傳遞給新窗口的參數(shù)(可選)。

openDialog()方法示例

var win = openDialog("http://example.tld/zzz.xul", "dlg", "", "pizza", 6.98);

筆記

新功能

all-最初啟動(或關(guān)閉("all=no"))所有chrome(除行為的標(biāo)志chrome,dialog和modal)。這些可以被覆蓋(因此"menubar=no,all"將打開除menubar之外的所有chrome)此功能被window.open()明確忽略。但是window.openDialog()發(fā)現(xiàn)它很有用,因為它有不同的默認假設(shè)。

默認行為

除非明確地關(guān)閉(” chrome=no“),否則該chrome和dialog功能總是啟用的。openDialog()以與window.open()同樣的方式處理缺少特征參數(shù);也就是說,一個空字符串將所有功能設(shè)置為off;除了chrome和dialog,默認為on。如果features參數(shù)是零長度的字符串,或只包含一個或多個的行為特征(chrome,dependent,dialog和modal)chrome特征被假定為“OS的選擇”。也就是說,窗口創(chuàng)建代碼沒有給出特定的指令,而是允許選擇最適合該操作系統(tǒng)上的對話框的chrome。

將額外參數(shù)傳遞給對話框

要將額外的參數(shù)傳遞到對話框中,您只需在windowFeatures參數(shù)后面提供它們:

openDialog("http://example.tld/zzz.xul", "dlg", "", "pizza", 6.98);

然后,額外的參數(shù)將被打包到類型Array的名為argumentstype的屬性中,并且此屬性將添加到新打開的對話框窗口中。

要從對話框代碼中訪問這些額外參數(shù),請使用以下方案:

var food  = window.arguments[0];
var price = window.arguments[1];

請注意,您可以從對話框代碼中的任何位置訪問此屬性。

從對話框返回值

由于window.close()刪除了與對話框窗口關(guān)聯(lián)的所有屬性(即從對話框加載的JavaScript代碼中指定的變量),因此無法使用全局變量(或任何其他構(gòu)造)將返回值傳遞回關(guān)閉操作。

為了能夠?qū)⒅祩鬟f回調(diào)用者,您必須通過額外的參數(shù)提供一些對象。然后,您可以在對話框代碼中訪問此對象并在其上設(shè)置屬性,其中包含要返回或保留的window.close()操作值。

var retVals = { address: null, delivery: null };
openDialog("http://example.tld/zzz.xul", "dlg", "modal", "pizza", 6.98,
    retVals);

如果在對話框代碼中設(shè)置retVals對象的屬性,如下所述,現(xiàn)在可以在openDialog()調(diào)用返回后,您現(xiàn)在可以通過retVals數(shù)組訪問它們。

在對話框代碼中,您可以按如下方式設(shè)置屬性:

var retVals = window.arguments[2];
retVals.address  = enteredAddress;
retVals.delivery = "immediate";

規(guī)范

這不是任何規(guī)范的一部分。

瀏覽器兼容性部分

新的兼容性表格處于測試階段

電腦端 移動端
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview Chrome for Android
Edge Mobile Firefox for Android
Opera for Android
iOS Safari
基本支持
(非標(biāo)準(zhǔn))
不支持
? 不支持
? ? 不支持
不支持
不支持
?
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號