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 :

body onload, javascript seulement 1fois


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut body onload, javascript seulement 1fois
    Bjr à tous,

    Au chargement de mon index, j'execute la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="Chargement()">
    qui appelle un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    music_window=window.open(...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function Chargement() {
    if(typeof(music_window) == 'undefined' || music_window.close)
    //create new
    	alert('Undefined!');
    	music_window=window.open('music.php','_blank','menubar=no, status=no, scrollbars=no, menubar=no, width=250, height=130');
    else
    	alert('Exists!');
    }
    Comme je recharge la page d'index plusieurs fois (CSS), je voudrais vérifier si ma fenetre enfant deja appellée par window.open existe encore (auquel cas je ne fais rien) , ou si je dois de nouveau la réouvrir.

    Dans mon cas, j'obtient toujours que 'music_window' est 'undefined'!

    Comment faire pour vérifier si une fenete existe en javascript (attention au cas ou celle là n'a jamais ete crée, la variable music_window n'existe pas)?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Salut,

    Etant donné que lorsque tu recharges ton index c'est comme si tu le faisais la première fois vis-à-vis de ce document (ton index) il est probablement plus simple d'utiliser un cookie pour savoir si tu l'as déjà ouverte

    devyan

  3. #3
    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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    il y a un script dans les contributions ou la faq
    un test du style
    sinon oui les cookies


    ou sous IE une variable navigator

    le plus simple encore etant une variable de session coté serveur

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pr les réponse.

    - La solution a cookie ne marche pas car pas mal d'utilisateurs n'acceptent pas les cookies.
    - Le sessions ne marchent pas (au 1er tour) car les anti-popup se déclenchent a la premiere visite du site, demandant si on accepte la 'pop-up': meme si on l'accepte, la session est ouverte et dans ce cas, on a pas vu passer le premier chargement (qui a ete refusé par l'anti-popup)!

    ==> la conclusion est qu'il faut vraiement tester la présence ou non de la fenetre enfant (popup) et l'ouvrir si elle existe pas déjà:
    reste la fctif (parent.name popup) : pouvez vous etre plus précis svp car je ne trouve pas la fonction et je ne vois pas comment celle ci agit sur une fenetre enfant. Un exemple?

    Merci

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Pourquoi chercher à régler ce souci au chargement de la page ? Ne serait ce pas plus logique de faire le ménage au déchargement ? Via l'événement window.onunload par exemple.

    ERE

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Précision:
    Le problème n'est pas un déchargement mais bien,d'appeller window.open une fenetre fille: En javascript
    1- Au lancement du parent <body 'Onload'... , verifier la présence d'une fenetre fille dont le nom a peut etre deja ete donné lors d'un premier lancement.
    - si fenete fille existe ne rien faire, surtout ne pas la relancer car il se passe déjà des chose (slideshow en cours) dans la fenetre fille.
    - si fenetre fille existe pas , la lancer.
    2- Si la parent est rechargée, (vu qu'elle est en CSS, chaque click equivaut a un rechargment)
    - alors faire comme au point 1.
    On ne parle donc pas de phase de déchargement.

    La question est donc simple comment vérifier qu'un child window est deja lancée? (attention dans le cas ou elle n'a jamais ete lancée une premiere fois, la variable ma_fenetre=windows.open(...) n'existe pas et peut retourner une erreur)
    Bizarrement le code que je ci en haut, me retourne toujours undefined, meme si la fenetre fille existe deja. Je pense que la variable identifiant la fenetre est inconnue.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Salut,

    Tu es dans un navigateur web, à chaque fois que tu affiches une page c'est pour ton navigateur comme si c'était la première fois.
    C'est à dire que toutes les variables que tu as pu utiliser dans tes scripts sont inconnues au chargement suivant sauf si tu utilises une méthode pour les mémoriser (cookie, session ou même paramètre dans l'url)

    devyan.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    OK, mais doit bien y'avoir un moyen de savoir si la fentre fille existe, en checkant son id, ou son nom de fenetre ou son titre? C'est quoi les focntions javascripts qui retournent les noms, id, et titre d'une fenetre fille?

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par galmiche Voir le message
    OK, mais doit bien y'avoir un moyen de savoir si la fentre fille existe, en checkant son id, ou son nom de fenetre ou son titre? C'est quoi les focntions javascripts qui retournent les noms, id, et titre d'une fenetre fille?
    Non il n'existe pas de moyen puisque comme le dit devyan:
    à chaque fois que tu affiches une page c'est pour ton navigateur comme si c'était la première fois.
    C'est à dire que toutes les variables que tu as pu utiliser dans tes scripts sont inconnues au chargement suivant
    . Tu ne peux lister les fenêtres utilisées par le navigateur; tu pourrais le faire avec des apis du système, mais pas en JS.
    Donc comme le dit ( encore ) devyan
    ... sauf si tu utilises une méthode pour les mémoriser (cookie, session ou même paramètre dans l'url)
    ERE

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/01/2010, 17h15
  2. Erreur javascript seulement sous IE
    Par deudtens dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/06/2006, 12h48
  3. body onload " .focus"
    Par vincedjs dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/02/2006, 10h21
  4. [regExp] passe en php mais pas javascript seulement sous ie
    Par zax-tfh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/09/2005, 14h34

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