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 :

Focus entre mère et fille (popup) IE vole le focus


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 24
    Points
    24
    Par défaut Focus entre mère et fille (popup) IE vole le focus
    Bonjour,

    J'ouvre une popup depuis une page mère : window.open(url, id, options)
    Toujours dans ma page mère, j'ai un menu javascript qui prend le focus sur le onMouseOver().

    Sur IE, le problème est qu'il "vole" le focus de la popup que j'ai ouverte.

    1. clic sur le lien pour ouvrir la popup
    2. sur la page mère en arrière plan, passage de la souris sur le menu
    3. la page mère passe au premier plan (et donc la popup passe en arrière plan...)

    Comment faire pour que cette foutue popup ne passe pas en arrière plan lorsqu'un focus est appelé sur la fenêtre mère ?

    L'id qu'on passe à la popup dans le window.open, peut-il servir à retrouver la fenêtre dans un tableau interne de la page mère du genre childWindow[id] qui récupère le handler de la fenêtre concernée.

    Merci de votre aide.

    Edit: problème non présent sur Firefox

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    essaye de donner expressement le focus à la fille lors de son ouverture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mypop=window.open(....).focus()

    Sinon pour ton idée de tableau tu trouveras la même chose par là
    http://www.developpez.net/forums/d64...s-seul-bouton/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    essaye de donner expressement le focus à la fille lors de son ouverture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mypop=window.open(....).focus()

    Sinon pour ton idée de tableau tu trouveras la même chose par là
    http://www.developpez.net/forums/d64...s-seul-bouton/
    Je pense que je me suis mal exprimé.
    Le problème est que la popup ouverte est considérée par IE comme un élément fille de la page appelante.
    Donc si un .focus() est utilisé sur la page appelante, elle prend le focus au détriment de la popup ouverte.
    Si j'ouvre n'importe quelle page html et qu'un focus est appelé sur une autre page ouverte précédemment, comme la nouvelle page n'est pas un élement fille de la page ou le focus se produit, alors la nouvelle page garde le focus.

    Ma question concernant le tableau interne était dans le but de signaler explicitement à la page mère de ne pas considérer la popup comme élément fille.

    Je redonne un autre exemple :
    1. Ouverture de la page mère
    2. Clic dans la page mère pour ouverture de la popup
    3. La popup est au premier plan
    4. Un .focus() est déclenché dans la page mère (page appelante)
    5. La page mère vole le focus de la popup (considéré comme élement fille)

    Alors que:
    1. Ouverture de la page mère
    2. Ouverture manuelle de la popup dans une autre page (en tapant directement l'url, sans windows.open())
    3. La popup ouverte manuellement est au premier plan
    4. Un .focus() est déclenché dans la page mère
    5. La popup ouverte manuellement reste au premier plan (car non considéré comme élement fille ou a lieu le focus)

    J'espère avoir été un peu plus clair

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    alors evites window.opener et utilise la librairie window prototype ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Du coup une autre question:
    est-il possible dans les options du windows.open() de spécifier une propriété magique qui fait que la fenêtre ouverte est réellement indépendante de la fenêtre appelante ?

    Edit : j'avais pas vu ta réponse. Window protoype ? Je connais pas je vais chercher un peu à ce sujet

  6. #6
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    sans tout casser, une solution simple (mais pas forcément la plus propre) est d'adapter ton menu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onmouseover="if (!myPop) {// Code actuel}"
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    A priori, Prototype Window Class n'est pas ce que je recherche.
    C'est vraiment pour faire des popups internes à une page d'après ce que j'en ai compris.
    Je souhaite avoir vraiment une popup bête et méchante, mais indépendante de son window.opener

    Je ne peux pas modifier le menu hélas, c'est une contrainte.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    l'opener d'une popup est en lecture seule (sauf sous IE)
    donc pas de popup sans fliliation
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 24
    Points
    24
    Par défaut
    Je viens de faire une découverte désespérante...
    La filiation se fait sur l'instance de IE qui est exécutée.

    Si on ouvre un navigateur, que depuis ce navigateur on ouvre plein de nouvelles fenêtre (Fichier/Nouvelle fenêtre ou Ctrl+N), toutes ces fenêtres sont liées concernant le focus.

    Si un focus() se produit sur l'une d'entre elles, elle volera le focus de toutes les autres.

    Chose qui ne se produit pas si on ouvre plusieurs fenêtres en cliquant plusieurs fois sur le lien qui démarre IE.

    Merci microsoft

Discussions similaires

  1. Héritage et association à la fois entre classe mère et fille
    Par jalam dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 12/01/2011, 11h02
  2. [RUNTIME] : base mère/base fille
    Par menguygw dans le forum Runtime
    Réponses: 5
    Dernier message: 19/12/2006, 12h29
  3. Forcer le focus à la réouverture d'un popup
    Par guidav dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 07/09/2006, 18h25
  4. Réponses: 2
    Dernier message: 17/05/2006, 10h26
  5. [VB.NET] Perte de focus entre deux form
    Par toniolol dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/07/2005, 08h00

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