IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Firefox : Donner focus à un autre onglet


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Ici je soumets le formulaire
    FENETRE2.focus();
    - sur la page Accueil, dans la fonction de soumission du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    J'aurais tenté un truc classique comme quand on utilise les popups car finalement, ce n'est pas très différent. Donc pour moi, la méthode qui a le plus de chances c'est un truc du genre de ce que tu as fais ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var fenCible = window.open('','FENETRE2');
    fenCible.focus();
    Mais ce qui m'ennuie avec cette méthode c'est qu'il semble que fenCible ne pointe pas sur une fenêtre du même nom ouverte avec un target. Essaie d'abord en faisant un window.open comme ci-dessus puis d'utiliser ton target. Vois si le JavaScript ouvre bien une nouvelle fenêtre qui est utilisée ensuite par le target. Ensuite, essaie le fenCible.focus() pour voir...

    EDIT : laisse tomber ce que j'ai dit, je dis de faire exactement ce que tu fais déjà... Fatigué, aujourd'hui...

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    J'ai reconnecté mes neurones et ils ont une question à te poser : comment fais-tu pour être sûr que tu vas ouvrir un nouvel onglet avec ton target et pas une nouvelle fenêtre ? C'est pour faire des tests de mon côté.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par _Mac_ Voir le message
    J'ai reconnecté mes neurones et ils ont une question à te poser : comment fais-tu pour être sûr que tu vas ouvrir un nouvel onglet avec ton target et pas une nouvelle fenêtre ? C'est pour faire des tests de mon côté.
    Un nouvel onglet EST une nouvelle fenêtre.
    C'est juste une fonctionnalité du navigateur (et un choix de l'utilisateur) de le présenter sous la forme d'un nouvel onglet dans une même fenêtre (au sens de l'OS, cette fois)

    A+

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Oui, je sais bien ce qu'est un onglet. La question c'est de savoir si c'est ça s'ouvre dans un nouvel onglet par paramétrage de Firefox, par l'utilisation d'un plugin spécifique ou par l'utilisation des API JavaScript Mozilla, à défaut d'utiliser un plug-in. Donc dire que c'est on choix utilisateur, c'est faux, ça peut être un choix forcé de différentes façon.

    En gros, si ça passe par une extension ou un code JavaScript spécifique Firefox, pourquoi à ce moment-là ne pas passer par cette même extension (ou une autre) ou un code spécifique Firefox pour forcer le focus ? Si le but est de faire un truc 100% utilisation d'API JavaScript standard, la solution est loin d'être la même.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    La question c'est de savoir si c'est ça s'ouvre dans un nouvel onglet par paramétrage de Firefox, par l'utilisation d'un plugin spécifique ou par l'utilisation des API JavaScript Mozilla, à défaut d'utiliser un plug-in. Donc dire que c'est on choix utilisateur, c'est faux, ça peut être un choix forcé de différentes façon.
    Firefox 2.0.0.8 :
    Menu Outils / Options / Onglets
    Les nouvelles pages doivent s'ouvrir dans :
    • Une nouvelle fenêtre
    • Un nouvel onglet
    C'est ce que j'appelle un "choix utilisateur"

    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    Merci pour votre aide... et justement, je me faisais la réflexion à l'instant même : quand je fais un var maFenetre = window.open('uneUrl','unTarget'); et bien il m'ouvre un nouvel onglet et pas une fenêtre popup.
    C'est bien ce que je veux, mais je m'étonne de ce comportement. Je ne crois pas avoir dit à Firefox à un moment donné d'ouvrir les popups sous forme d'onglets

    D'autres idées ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 79
    Par défaut
    Oups, j'ai répondu en même temps que toi, Mac. Et donc pour répondre clairement : non je n'utilise aucune extension Firefox, ni code JavaScript particulier. Par contre, dans les différents frameworks que j'utilise, et qui embarquent pas mal de JavaScript, peut-être que certains modifient les comportements standards ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre le focus sur un autre onglet
    Par Jazz_ dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/07/2010, 16h24
  2. empécher l'accès à d'autres onglets
    Par tibs dans le forum MFC
    Réponses: 3
    Dernier message: 08/03/2006, 19h44
  3. [C#][.Net 2.0] donner focus à Combobox, après click sur treeview
    Par Harry_polin dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/02/2006, 22h27
  4. Focus et autres complications
    Par masto dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 13/09/2005, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo