window.openDialog

window.openDialog est une extension à window.open(). Elle s'utilise de la même manière, excepté qu'elle peut prendre plusieurs paramètres optionnels aprèswindowFeatures, et quewindowFeatures est traîté différemment.

Les paramètres optionnels, si présents, seront regroupés dans un objet JavaScript Array et seront accessibles depuis la nouvelle fenêtre par la propriété window.arguments. Ils sont accessibles depuis les scripts de la fenêtre à tout moment, notamment lors du traitement d'un évênementload . Ces paramètres peuvent donc être utilisés pour passer des arguments à une boîte de dialogue, et pour les récupérer ensuite.

Notez que l'appel à la méthodeopenDialog() se termine immédiatement. Si vous souhaitez le bloquer jusqu'à ce que l'utilisateur ferme la boîte de dialogue, utilisez la valeurmodal pour le paramètre features. En conséquence, l'utilisateur ne pourra pas interagir avec la fenêtre parente jusqu'à ce qu'il ferme la boîte de dialogue modale.

Syntaxe

newWindow = openDialog(url, name, features, arg1, arg2, ...)
newWindow
La nouvelle fenêtre ouverte.
url
L'URL du document à charger dans la nouvelle fenêtre.
name
Le nom de la fenêtre (optionnel). Voir la description dewindow.open() pour plus de détails.
features
Voir la description dewindow.open() pour la description.
arg1, arg2, ...
Les arguments à passer à la nouvelle fenêtre (optionnel).

Exemple

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

Notes

Nouvelles fonctionnalités

all
Active ou désactive ("all=no") toutes les fonctionnalités (excepté chrome, dialog etmodal). Peut être utilisé conjointement avec les autres drapeaux (par exemple, "menubar=no, all" active toutes les fonctionnalités excepté menubar). Ce drapeau est ignorée par la méthodewindow.open() mais pas par window.openDialog().

Comportement

La méthodewindow.openDialog() traite l'absence du paramètrefeatures de la même manière quewindow.open() (une chaîne vide désactive toutes les fonctionnalités) excepté pourchrome etdialog qui sont activés par défaut et peuvent être explicitement désactivées par "chrome=no".

Passage de paramètres supplémentaires

Pour passer des paramètres supplémentaires à la boîte de dialogue, vous pouvez simplement les ajouter après le paramètre features :

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

Ces paramètres seront ensuite regroupés dans une propriété arguments de typeArray, et cette propriété sera ajoutée à la nouvelle boîte de dialogue.

Pour accéder à ces paramètres depuis un script de la boîte de dialogue, utilisez le procédé suivant :

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

Notez que vous pouvez accéder à cette propriété depuis n'importe où dans le script. (Autre exemple).

Retourner des arguments depuis la boîte de dialogue

Depuis quewindow.close() efface toutes les propriétés associées à la boîte de dialogue (c'est-à-dire les variables spécifiées depuis le code JavaScript chargé depuis la boîte de dialogue), il n'est pas possible de retourner des valeur après la fermeture de la boîte de dialogue en utilisant des variables globales (ou toute autre méthode).

Pour pouvoir retourner des valeurs à la fenêtre parente, vous devez passer un objet via les paramètres supplémentaires. Vous pouvez ensuite accéder à cet objet depuis la boîte de dialogue et modifier ces propriétés, dont les données que vous souhaiter conserver après l'appel à la méthodewindow.close().

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

Si vous modifiez les propriétés de l'objetretVals depuis la boîte de dialogue comme décrit précédemment, vous pouvez y accéder via le tableauretVals après l'appel à openDialog().

Depuis la boîte de dialogue, vous pouvez modifier les propriétés comme suit :

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

Voir aussice message. (Autre exemple).
Voir aussiwindow.importDialog().

Spécification

DOM Level 0. Ne fait partie d'aucune spécification.

Compatibilité des navigateurs

BCD tables only load in the browser

Voir également