Il est impossible de créer deux fenêtre de même nom.
l'ouverture avec un target ou un name (en javascript) ouvre l'onglet ou la fenêtre portant ce nom
si la fenêtre n'existe pas elle est crée.
la fenêtre n'a rien à voir avec le DOM le DOM est le contenu d'une fenêtre uniquement lorsque celle-ci contient du HTML ou du XML
Donc lorsque un lien est cliqué alors que le lien possède un attribut target le lien s'ouvre dans la fenêtre cible et ce-là quel que soit le moyen utilisé pour ouvrir la fenêtre (plugin, javascript du même ou d'un autre site, target du même ou d'un autre site)
les points importants sont
- la référence à la fenêtre ouverte
- la référence à l'oppener
lorsqu'on ouvre une fenêtre avec window.open on obtient une référence sur la fenêtre cible.
supposons que l'utilisateur ouvre deux sites A et B
Le site A ouvre une fenêtre "named" et garde une référence dessus
myWindow = window.open("mapage.html", "named");
myWindow est une référence à la fenêtre contenant mapage.html
maintenant le site B ouvre lui aussi un fenêtre "named" et garde lui aussi une référence dessus
win = window.open("doProcess.jsp", "named");
que ce passe-t-il à ce moment là ?
le navigateur repère la fenêtre "named"
il détecte que le lien n'est plus celui du site A mais du site B
il rompt la réféence myWindow du site A
il ouvre doProcess.jsp
win est une référence à la fenêtre contenant le résultat de doProcess.jsp
Il se passe exactement le même processus si c'est un lien avec target qui est ouvert à la différence que la page qui ouvre le target ne peut garder de référence à la fenêtre ouverte.
La référence inverse "oppener"
lorsqu'on ouvre une nouvelle fenêtre que ce soit avec target ou window.open la fenêtre ouverte garde une référence à la fenêtre qui l'a ouverte.
Le site A ouvre une fenêtre "named"
window.open("mapage.html", "named");
dans named le navigateur garde une référence à la page du site A qui a ouvert la page. en javascript on y a accès via window.oppener.
maintenant le site B ouvre lui aussi un fenêtre "named"
window.open("doProcess.jsp", "named");
que ce passe-t-il à ce moment là ?
le navigateur repère la fenêtre "named"
il détecte que le lien n'est plus celui du site A mais du site B
il vide la fenêtre named
la fenêtre named ne possède plus de référence au site A
Il ouvre doProcess.jsp
et créé une référence à la page du Site B qui a "ouvert" named.
dans named le navigateur garde une référence à la page du site B qui a ouvert la page. en javascript on y a accès via window.oppener.
A+JYT
Partager