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 :

[Débutant] fermeture fenêtre enfant


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut [Débutant] fermeture fenêtre enfant
    Bonjour,

    Décidément j'ai du mal à saisir certains comportements de JavaScript, peut-être pourrez-vous m'aider! J'en suis à mes débuts en JavaScript donc essayez d'être simple, je vous en serai très reconnaissant.

    J'ai une page HTML avec un lien, en cliquant sur ce lien une nouvelle fenêtre s'ouvre et m'affiche un texte, une image et un lien pour fermer la fenêtre.

    HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html>
    <head>
    <title> 07 Pop-up </title>
    <script language="JavaScript" type="text/JavaScript" src="07.js" />
    </head>
    <body>
    <a href='#'>Image</a>
    </body>
    </html>
    07.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    window.onload = initNewWindow;
     
    function initNewWindow() {
    	document.links[0].onclick = newWindow;
    }
     
    function newWindow() {
    	var desc = window.open("", "desc", "width=350, height=350");
    	var doc = desc.document;
    	doc.title="Image";
    	doc.body.innerHTML = "<center><h3>Image de la bannière</h3> <img src='https://www.sematix-computers.com/images/1-308.jpg'> <h3><a href='http://' id='close'>Fermer</a></h3></center>";
    	doc.getElementById("close").onclick = desc.close();
    }
    Le problème : lorsque je clique sur le lien dans la page HTML, je vois apparaître brièvement la fenêtre puis elle se ferme toute seule. Pourtant je dis bien que j'apelle desc.close() lorsqu'il y a un événement onclick d'où l'incompréhension du comportement!

    J'ai ensuite essayé autre chose : à l'événement onclick je lance une fonction qui a pour but de fermer la fenêtre.

    07.js modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    window.onload = initNewWindow;
     
    function initNewWindow() {
    	document.links[0].onclick = newWindow;
    }
     
    function newWindow() {
    	var desc = window.open("", "desc", "width=350, height=350");
    	var doc = desc.document;
    	doc.title="Image";
    	doc.body.innerHTML = "<center><h3>Image de la bannière</h3> <img src='https://www.sematix-computers.com/images/1-308.jpg'> <h3><a href='http://' id='close'>Fermer</a></h3></center>";
    	doc.getElementById("close").onclick = winClose;
    }
     
    function winClose() {
    	desc.close();
    	return false;
    }
    La fenêtre s'ouvre et reste, mais lorsque je clique sur le lien Fermer elle ne se ferme pas mais charge la cible du lien. Là non plus je ne comprends pas ce comportement.

    Merci pour vos infos et soyez indulgents : ces scripts ne sont écrits que dans un but éducatif...

    Bon week-end,

    webrider

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu peux tenter : doc.getElementById("close").onclick = desc.close; sans les parenthèses dans ton premier code. Avec les parenthèses tu appelles la fonction. Dans ton 2e code je pense qu'il faut mettre return false; dans ton href pour que cela fonctionne plutôt que de mettre 'http://'
    Bye
    Vive les roues en pierre

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut!

    Première solution : résultat identique -> ça marche toujours pas
    Deuxième solution : le lien n'est plus cliquable!

    C'est quand-même bizarre, ça doit être possible de fermer une fenêtre enfant depuis elle-même ou me tromperais-je?

    Merci!

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Sinon fais simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.body.innerHTML = "<center><h3>Image de la bannière</h3> <img src='https://www.sematix-computers.com/images/1-308.jpg'> <h3><a href='http://' onClick='window.close()'>Fermer</a></h3></center>"
    C'est bizzare que le 1er code ne fonctionne pas sans les parenthèses.
    Vive les roues en pierre

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je viens de changer le lien par un bouton de type submit.

    Si j'utilise les () après close -> la fenêtre apparaît puis disparaît toute seule en une fraction de seconde. Sans les () rien ne se passe!

    Autant j'ai eu facile à apprendre les langages type C et PHP, autant JavaScript me dépasse car rien ne se passe comme il le faudrait......
    Mais qui a dit que c'était si simple?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Djakisback
    Sinon fais simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.body.innerHTML = "<center><h3>Image de la bannière</h3> <img src='https://www.sematix-computers.com/images/1-308.jpg'> <h3><a href='http://' onClick='window.close()'>Fermer</a></h3></center>"
    C'est bizzare que le 1er code ne fonctionne pas sans les parenthèses.
    Désolé j'ai posté mon dernier message sans voir celui-là.

    Cette modification fonctionne, c'est déjà un bon point! Maintenant je voudrais pouvoir faire fonctionner ma façon de faire (toujours par but éducatif et puis j'aime pas rester avec un problème sur la conscience! lol).

    Je ne comprends pas non plus pourquoi ça marche pas sans les parenthèses.

Discussions similaires

  1. Fermeture d'une fenêtre enfant
    Par fabrice.Croize dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/06/2006, 01h03
  2. Réponses: 2
    Dernier message: 23/06/2005, 09h06
  3. Enregistrer Contenu d'une fenêtre enfant.
    Par yaku dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/12/2004, 18h40
  4. Fenêtre enfant MDI : passage paramètre à la création
    Par Orangina dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/07/2004, 11h55
  5. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42

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