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 :

Une astuce pour un window.close ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Une astuce pour un window.close ?
    Bonjour à tous,

    Supposons un très long formulaire.
    Au milieu de ce formulaire, un lien ouvre une popup qui permet de choisir une image par un bouton radio.

    Le clic sur ce bouton a 2 fonctions :
    - window.close()
    - Un window.opener qui appelle une fonction de la page parent et affiche l'image qui a été choisie dans un div.

    Jusqu'à là, tout va bien.

    L'ennui, c'est que lorsque la popup se ferme, le navigateur "saute" et remonte en tête de page alors que je voudrais que la page parent reste au même niveau que le lien de la popup. (C'est un détail, mais le formulaire étant très long, ce n'est pas très pratique...)

    J'ai essayé avec une ancre...
    Pas de succès.
    Quelqu'un a une idée ?

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    A la rigueur, on peut imaginer une solution "à la main" en stockant la valeur du scroll de la fenêtre mère et forcer à nouveau cette valeur après fermeture de la popup, c'est-à-dire quand la fenêtre principale récupère le focus...

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    et avec une ancre ??

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    et avec une ancre ??
    Citation Envoyé par renaud26
    J'ai essayé avec une ancre...
    @le chomeur : mais je t'accorde que c'est bizarre : j'aurais moi aussi essayé ça dans un premier temps...
    @renaud26 : On peut voir comment tu as implémenté le mécanisme ? (c'est peut-être une erreur de code et pas de raisonnement ^^)

  5. #5
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    on dirait que le code est posté ( page rafraichie ... mais même avec un ancre ça devrait marcher )

  6. #6
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    sinon juste eviter le popup en restant sur la page mère avec un truc comme prototype window ...
    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 !

  7. #7
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    (c'est peut-être une erreur de code et pas de raisonnement ^^)
    *sifflotte*

  8. #8
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Par défaut
    Pas besoin d'ancre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="javascript:void(0)" onClick="popupcentre('images.php','images','850','800','yes')">Cliquez ici pour choisir une image</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="javascript:popupcentre('images.php','images','850','800','yes')">Cliquez ici pour choisir une image</a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="javascript:popupcentre('images.php','images','850','800','yes')" onclick="return false;">Cliquez ici pour choisir une image</a>
    Je recommande la 1ére solution

  9. #9
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour à tous,

    Je me permets de réouvrir ce post, car je souhaiterais avoir une précision :

    J'ai donc écrit mon lien de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="javascript:void(0)"  onclick="fonction();return false;">Clic</a>
    Mais supposons que le window.close() de la popup soit suivi d'un window.opener qui appelle une fonction de la page parent, et que cette fonction rafraîchisse la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <a href="#" onClick="window.close();window.opener.rafraichit("mapage.php?id=1")>Fermer</a>
     
    //et dans la page parent
    function rafraichit(url){
    window.location.href=url;
    }
    Comment, après le refresh de la page, être au même niveau que la popup ?
    Mettre une ancre + url#ancre dans la fonction "rafraichit" empêche justement le refresh...

  10. #10
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Mettre une ancre + url#ancre dans la fonction "rafraichit" empêche justement le refresh...
    rajoutes un timestamps dans l'url avant l'ancre ...
    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 !

  11. #11
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Mille excuse, je n'ai pas vu ton post.
    Un timestamp avant l'ancre ?
    Peux-tu préciser ?

  12. #12
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    tu n'es pas logique dans l'ordre des instructions ...
    si tu fais un window.close() suivi d'une instruction, la seconde instruction à de fortes chances de ne pas etre exécutée vu que la page est fermée ...

    ensuite ce que l'on appelle un timestamp est un paramètre aléatoire et changeant qui oblige le rechargement de la page, le paramètre devant être remis au serveur ...
    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 !

  13. #13
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Hello Space Frog,

    Si, cette "suite" fonctionne très bien : le popup comprend un window.close ET un opener(fonction X) sur le onclick.
    Elle se ferme et appelle la fonction X de la page parent qui dit "refresh"...la page parent.

    Bon, il se trouve que je voudrais refresh et "arriver" au niveau d'une ancre.
    Et que effectivement... url+#ancre fait que window.location.href est inopérant.

    Si j'enlève le #ancre, c'est ok.

    Le timestamp : je ne capte pas trop son utilité...mais je vais creuser.

  14. #14
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    ensuite ce que l'on appelle un timestamp est un paramètre aléatoire et changeant qui oblige le rechargement de la page, le paramètre devant être remis au serveur ...
    tout-à-fait ^^
    juste un exemple pour notre ami :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var ts = new Date().getTime();
    var tonUrl = "www.tonsite/section/page.php?pageId=page1&ts=" + ts;
    >>> le nombre de millisecondes contenu dans ts sera à chaque fois différent, garantissant que ton url le sera aussi, évitant l'utilisation d'une version "en cache" de ta page dans le navigateur client... ^^

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

Discussions similaires

  1. [Débutant] Developper une application pour tablette windows
    Par MetallicaMan dans le forum WinRT
    Réponses: 1
    Dernier message: 03/04/2013, 14h40
  2. [TPL] Une astuce pour éditer les TPL sous Ubuntu
    Par §Gama§ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 27/03/2013, 21h40
  3. [MySQL] y a t il une astuce pour améliorer la gestion de ses requêtes dans un projet ?
    Par razily dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/02/2012, 16h54
  4. Réponses: 4
    Dernier message: 31/05/2011, 19h01
  5. une astuce pour ouvrir la base de registre d'un autre disque
    Par bouassouille dans le forum Windows XP
    Réponses: 4
    Dernier message: 07/10/2005, 00h53

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