Bonjour,

Résumé :

Il n'est, semble-t-il, pratiquement pas possible d'empêcher que des fenêtres puissent porter le même nom "name", ceci même si un outil est conçu pour gérer une liste de noms uniques il ne peut empêcher la création de doublons. Par ailleurs tout l'environnement javascript semble supposer qu'un "name" est unique.
En effet, il peut y avoir des doublons volontaires ou accidentels, mais rien ne semble permettre de les trouver, de le savoir.
Les questions sans réponse me semblent nombreuses.

J'ai précédemment ouvert un sujet sur l'utilisation de {window.name} pour accéder via {window.open('',name)} par d'un processus d'accès par leur nom à des fenêtres générées à partir d'une liste de fenêtres connues.

Tout cela marche bien au départ, mais le principe repose sur la possibilité d'existence d'une correspondance biunivoque entre les "name" créés (liste des fenêtres créées gérée par le parent) et les fenêtres gérées par le navigateur, ce qui peut devenir faux.

Cette hypothèse peut en effet devenir fausse dans pas mal de cas dont celui de la "duplication" de fenêtre. Alors une question se pose :

Comment se comporte {window.open("",name)} quand plusieurs fenêtres portent le même nom ?

Pour l'instant une chose est certaine l'instruction retrouve le handle vers la première fenêtre ouverte, mais bien d'autres questions restent ouvertes et posent de sérieux problèmes :
  • que se passe-t-il quand cette première fenêtre est fermée : le(les) doublon(s) dévien(nen)t-il(s) accessible ou est(sont)-il(s) ignoré(s) ?
  • quel moyen pour accéder à cette(ces) fenêtre de nom pourtant connu mais cachée (peut-être même multiple) et pourtant issus du même parent.
  • comment le concepteur de l'interface peut-il réaliser quelque chose de fiable et comment l'utilisateur peut-il travailler sans erreur s'il y a confusion entre les fenêtres (le concepteur devrait pouvoir "marquer" le doublon, générer une alerte, restaurer des propriétés... changer le name)


A mon avis, le principe même du "name" suppose au départ du modèle DOM ainsi que toutes les fonctions associées qu'il est unique, ce qui est faux dans la pratique. De plus il n’apparaît pas possible d'interdire la fabrication de doublons. L'idée même que des doublons puissent exister n'est évoquée nulle part (bien que plusieurs articles sur le net traitent de la manière d'obtenir un identifiant unique de fenêtre soit traité, ils semblent passer tous au travers du problème, ignorer qu'il puisse y avoir là un problème).

Les questions les plus élémentaires que se posent et dont la solution permettrait de mettre en oeuvre des solutions pratique aux problème que j'expose, sont à mon avis :

  • Existe-t-il un moyen pour que lorsqu'une fenêtre est dupliquée (i.e. "dupliquer" sous chrome etc...), lorsqu'elle récupère le focus, le développeur puisse détecter qu'elle est une duplication (via l'objet window).
  • Il y a-t-il un moyen pour retrouver tous les handles vers des fenêtres portant le même nom ? (évidemment on pense à window.open("",name) qui pourrait renvoyer une array : ou en JQ : $(window:name)...)


Avez-vous une solution ? une idée ? je cherche sans-trouver, tout (je ne détaille pas) se termine en impasse pour l'instant.
Merci d'avance

Trebly