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] Popup avec javascript dans un fichier séparé


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut [Débutant] Popup avec javascript dans un fichier séparé
    Bonjour à tous,

    Je veux séparer le javascript du code xHTML. Par conséquent, j'ai créé un fichier .xhtml et un autre .js. Cependant, je n'arrive pas à ouvrir de popup.

    Code xHTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
        <head>
            <title>Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<script type="text/javascript" src="script.js"></script>
        </head>
     
       <body>
    		<a href="#" id="popup"><img src="test.jpg" alt="test"></a>
       </body>
    </html>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('popup').onClick="window.open('image.jpg','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0');return(false)"

    Comment faire ?

    Merci d'avance,

    Marco85

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Dans ton code javascript, tu fais xxx.onClick = STRING alors qu'il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    document.getElementById('popup').onClick=function(){
        window.open(
            'image.jpg',
            '_blank',
            'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0'
          );
        return(false);
      };
    Le code javascript se trouvant à l'intérieur de tes guillemets en html doit être enlevé de ceux-ci et placé dans une fonction. Regarde la différence entre ton code et le mien : le function() {...} n'est pas en rouge, car c'est du code Javascript. Tandis que chez toi, c'est en rouge parce que c'est considéré comme une chaîne de caractère.

  3. #3
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut
    Merci pour cette remarque très pertinente. Je suis vraiment un débutant (depuis ce matin ...) et je n'avais même pas remarqué.

    Voici donc mon code actuel :
    Code xHTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
        <head>
            <title>Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<script type="text/javascript" src="script.js"></script>
        </head>
     
       <body>
    		<a href="#" id="popup"><img src="test.jpg" alt="test"></a>
       </body>
    </html>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    document.getElementById('popup').onClick=function(){
        window.open(
            'image.jpg',
            '_blank',
            'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0'
          );
        return(false);
      };

    Malheureusement, quand je clique sur le lien, rien ne s'ouvre. Comme j'utilise Firefox, le debugger me dit : document.getElementById("popup") has no properties. Je ne comprends pas trop ce que ça veut dire ni comment résoudre ce problème.

    Quelqu'un peut-il éclairer ma lanterne sur cette erreur et sur la manière de la résoudre ?
    Merci d'avance.

    Marco85

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Bon, ça, c'est plus complexe, effectivement... mais facilement soluble.

    ton code javascript est exécuté pile au moment où il est chargé, et le document n'a peut-être pas encore chargé toute la page HTML.

    Dans ce cas, il te suffit d'insérer ce code dans window.onload afin de demander que le code soit exécuté une fois que la page HTML sera entièrement chargée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    window.onload=function() {
      document.getElementById('popup').onClick=function(){
          window.open(
              'image.jpg',
              '_blank',
              'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0'
            );
          return(false);
        };
    };

  5. #5
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut
    Super ... merci dingoth pour la correction de cette erreur. Malheureusement, il ne se passe toujours rien. Je n'ai plus d'erreur mais rien ne s'ouvre, aucune popup. Pourtant, j'ai bien le curseur de type "main" sur mon image.

    Qu'ai-je encore oublié ?

    Merci encore ... et d'avance pour ton aide,

    Marco85

  6. #6
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut
    Bon alors j'ai tout refait et tout changé ...

    Voici mon code désormais :
    Code xHTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
        <head>
            <title>Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<script type="text/javascript" src="script.js"></script>
        </head>
     
       <body>
    		<a href="#" onclick="PopupImage('image.jpg');"><img src="test.jpg" alt="test"></a>
       </body>
    </html>
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function PopupImage(image)
    {
    	window.open
    	(
    		image,
    		'_blank',
    		'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0'
    	);
    }

    J'ai fait une fonction comme ça ce sera réutilisable par plusieurs fichiers vu que j'aurais les mêmes options. Est-ce que c'est bien ? Est-ce que c'est la meilleure façon de faire les choses ?

    D'autre part, j'aimerais modifier 2 choses :
    - que la popup fasse exactement la taille de l'image affichée (sans passer ses dimensions en paramètres),
    - qu'un clic sur l'image de cette popup ferme cette popup.

    Est-ce possible en JavaScript ?

    Merci d'avance de m'éclairer sur tous ces sujets.

    Marco85

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/09/2006, 16h07
  2. Réponses: 8
    Dernier message: 29/01/2006, 16h48
  3. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  4. Probleme avec print dans un fichier
    Par goblin dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2005, 18h15
  5. [débutant] nombre de colonne dan sun fichier csv
    Par mandagor dans le forum C++
    Réponses: 18
    Dernier message: 15/06/2005, 15h42

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