Firefox : Donner focus à un autre onglet
Bonjour,
J'ai une application Web (Java + JSF) qui exploite l'utilisation des onglets de Firefox pour avoir plusieurs pages ouvertes en même temps, comme une application en mode multi-fenêtrage.
Je précise qu'il ne s'agit pas d'une fenêtre qui ouvre d'autres fenêtres de type "popup".
Depuis un onglet "Accueil", j'ouvre un nouvel onglet en soumettant un formulaire avec une propriété target "FENETRE2".
Ce 2e onglet prend bien le focus, pas de soucis.
Mais si ensuite je retourne sur l'onglet "Accueil", et que je resoumets le formulaire avec le même target, le 2e onglet se recharge bien, mais il ne prend pas le focus. C'est la mon problème
Pour info, je soumets le formulaire grâce à une fonction JavaScript, car j'ai d'autres choses à faire à ce moment là.
J'ai essayé plusieurs pistes, mais en vain.
- sur le body de la page résultat : onLoad="self.focus();"
- sur la page Accueil, dans la fonction de soumission du formulaire :
Code:
1 2 3 4
|
// Ici je soumets le formulaire
var fenetreCible = document.getElementsByName("FENETRE2")[0];
fenetreCible.focus(); |
- sur la page Accueil, dans la fonction de soumission du formulaire :
Code:
1 2 3
|
// Ici je soumets le formulaire
FENETRE2.focus(); |
- sur la page Accueil, dans la fonction de soumission du formulaire :
Code:
1 2 3 4
|
var fenCible = window.open('','FENETRE2); // Ouverture avec rien pour récupérer l'instance de la fenêtre
// Ici je soumets le formulaire
fenCible.focus(); |
- J'ai aussi testé le bout de code Firefox qui se trouve ici, mais j'ai l'erreur suivante :
Code:
[Exception... "'Permission refusée d'obtenir la propriété UnnamedClass.classes' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "<unknown>" data: no] Line 0
lors de l'exécution de la ligne :
Code:
1 2
| var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator); |
Bref, je ne m'en sors pas...
Quelqu'un aurait-il une idée sur la façon dont je pourrais régler mon problème ?
Merci d'avance