Window.openDialog()

Non standard: Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.

La méthode window.openDialog() est une extension de window.open(). Elle se comporte de la même façon mais possède plus de paramètres et traite le paramètre windowFeatures différemment.

Les paramètres optionnels, s'ils sont présents, sont empaquetés dans un tableau JavaScript (Array) et ajouté à la nouvelle fenêtre ainsi créée via une propriété intitulée window.arguments. Ils pourront être utilisés par le code JavaScript de la fenêtre à tout moment, y compris lors de l'exécution d'un gestionnaire d'évènement pour load. Ces paramètres pourront alors être utilisés afin de passer des arguments entre la fenêtre et la boîte de dialogue.

L'appel à openDialog() renvoie immédiatement. Si on souhaite que l'appel soit bloquant jusqu'à ce que la personne ait fermé la boîte de dialogue, on pourra fournir modal comme paramètre pour windowFeatures. Cela signifie également que l'utilisateur ne pourra pas interagir avec la fenêtre ouvrante tant que la boîte modale n'est pas fermée.

Syntaxe

openDialog(url)
openDialog(url, nom)
openDialog(url, nom, fonctionnalites)
openDialog(url, nom, fonctionnalites, arg0, arg1, /* ... ,*/ argN)

Paramètres

url

L'URL à charger dans la nouvelle fenêtre ouverte.

nom Facultatif

Le nom de la fenêtre. Voir la description de window.open() pour plus de détails.

fonctionnalites Facultatif

Voir window.open() pour plus de détails.

arg1, arg2Facultatif

Les arguments à passer à la nouvelle fenêtre.

Valeur de retour

La nouvelle fenêtre ouverte.

Exemples

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

Notes

Nouvelles fonctionnalités

all active (ou désactive avec ("all=no")) initialement tout le chrome (excepté pour le comportement des marqueurs chrome, dialog et modal). Ce comportement peut être surchargé (par exemple afin que "menubar=no,all" affiche tout le chrome sauf la barre de menu). Cette fonctionnalité est explicitement ignorée par window.open(). window.openDialog() l'utilise en raison de ses hypothèses différentes.

Comportement par défaut

Les fonctionnalités chrome et dialog sont prises par défaut comme actives, à moins d'être explicitement désactivées ("chrome=no"). openDialog() considère l'absence de paramètres de la même façon que window.open(). Autrement dit, une chaîne de caractères vide désactive toutes les fonctionnalités sauf chrome et dialog. Si le paramètre features est une chaîne de caractères de longueur nulle ou contient uniquement une ou plusieurs fonctionnalités (chrome, dependent, dialog et modal), les fonctionnalités du chrome sont déterminées afin de correspondre le mieux possible au système d'exploitation.

Passer des paramètres supplémentaires à la boîte de dialogue

Afin de passer des paramètres supplémentaires à la boîte de dialogue, on pourra les fournir après le paramètre windowFeatures :

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

Les paramètres supplémentaires sont alors empaquetés dans une propriété intitulée arguments et qui est un tableau (Array). Cette propriété est ajoutée à la fenêtre de dialogue ainsi créée.

Pour accéder à ces paramètres depuis le code de la boîte de dialogue, on pourra utiliser la structure suivante :

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

Il est possible d'accéder à cette propriété depuis n'importe quel endroit dans le code de la boîte de dialogue.

Renvoyer des valeurs depuis la boîte de dialogue

Comme window.close() efface toutes les propriétés associées à la fenêtre de dialogue (comme les paramètres supplémentaires vus avant), il n'est pas possible de fournir des valeurs en retour après la fermeture de la fenêtre en utilisant des variables globales (ou d'autres structures).

Afin de pouvoir renvoyer des valeurs à la fenêtre appelante, il faudra fournir des objets via les paramètres supplémentaires. Le code de la fenêtre de dialogue pourra alors modifier des propriétés de cet objet, qui contiendront les valeurs qu'on veut renvoyer ou conserver après l'opération window.close().

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

Si on modifie les propriétés de l'objet retVals dans le code de la boîte de dialogue, comme ci-après, on pourra consulter leurs valeurs depuis la fenêtre d'origine après le retour de l'appel à openDialog().

Au sein de la fenêtre de dialogue, on pourra modifier les propriétés comme suit :

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

Spécifications

Cette méthode ne fait partie d'aucune spécification.

Compatibilité des navigateurs

BCD tables only load in the browser