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 :

Comment créer une pop-in afin de charger une div info ?


Sujet :

JavaScript

  1. #21
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Claudine Voir le message
    Pour mon instruction,voulez-vous me dire quel est le rapport avec l'erreur citée par le debugger sous IE? Je suppose qu'il s'agit de l'objet 'texte' et non 'application'.
    Non, c'est juste qu'avec "application/javascript", le navigateur n'a pas reconnu le code comme étant du javascript...
    Citation Envoyé par Claudine Voir le message
    J'ai soif de connaître diverses résolutions de réaliser une pop-in dont celle proposée par MoumouteMasters le 20/03 à savoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#iddevotrediv').dialog();
    tout en utilisant la bibliothèque Jquery .
    J'avais utiliser dans mon précedent logiciel la bibliothèque Jquery mais je n'ai pas eu de résultat positif .Où introduire cette fameuse ligne de code?
    jQuery est une excellente bibliothèque javascript, elle a un énorme avantage, elle nous affranchit des différences entre les différents navigateurs (et c'est un problème énorme).

    Pour l'exemple donné, ce n'est pas la même chose, il s'agit d'une boite de dialogue, pas d'une info-bulle.
    Pour l'utiliser, il suffit d'inclure les 2 bibliothèques requises (dans la partie <head> de préférence)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      <script src="//code.jquery.com/jquery-1.10.2.js"></script>         // <-- l'api de jQuery
    
    
      <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>  // <-- l'api de la partie User Interface (UI)
    Dans ton cas, tu aurais d'ailleurs pu te contenter de la version prévue par html, à savoir l'attribut "title". En écrivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    echo'<td bgcolor="#CCCCCC" title="' . addslashes($row['infos']) . '">'.$row["MaPage"].'</a></td>'
    on aurait eu à peu de chose près le même résultat, au css près...

    Bref, il y a toujours x manières de faire les choses, heureusement d'ailleurs
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #22
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Sans douter du fait que ça fonctionnera certainement,...
    Je te rassure cela a fonctionné et fonctionne encore très bien, par contre

    ...on ne peut pas dire que ce soit la solution la plus limpide qui soit
    je ne saisi pas ce que tu veux dire par là.

    Personnellement, j'utilise jQuery pour l'aspect abstraction des spécificités du javascript par navigateur,
    si tu préfères une solution jQuery en voilà une qui me semble aussi verbeuse qu'en vanilla JS
    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
    19
    20
    21
    22
    $(function() {
        var pos,
            oBulle = $('<div>', {
                'id': 'bulle',
                'title': ' Cliquez pour fermer !'
            })
            .appendTo('body')
            .on('click', function() {
                $(this).hide();
            });
     
        $('span.info').on('click', function() {
            pos = $(this).position();
            oBulle
                .html($(this).find('span').html())
                .css({
                    'left': pos.left,
                    'top': pos.top
                })
                .show();
        });
    });

  3. #23
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    je ne saisi pas ce que tu veux dire par là.
    disons que je trouve que les solutions qui consistent à mouliner le code de la page pour ce genre d'opération ne sont pas de mon goût, je préfère une api qui se charge d'afficher l'information avec un appel genre showTitle(event, text)... elle permettrait en plus de s'adapter directement (à la demande) à l'espace disponible et recadrer la popup. Avec ta solution, s'il n'y a pas assez de place sur la droite, la popup est tronquée...

    mais ce n'est que mon point de vue, ta solution fonctionne parfaitement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #24
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Avec ta solution, s'il n'y a pas assez de place sur la droite, la popup est tronquée...
    elle sera au plus réduite en largeur et viendra se coller sur le bord droit. Cette solution est très largement viable dans 99.9% des cas, lorsque l'on ne veut pas trop de super effet et encore.

  5. #25
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    elle sera au plus réduite en largeur et viendra se coller sur le bord droit.
    Ben non, justement, je l'ai tester avec Firefox en réduisant la fenêtre et elle est tronquée.

    Mais bon, on ne partage pas la même vision et ce n'est pas grave
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #26
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Mais bon, on ne partage pas la même vision et ce n'est pas grave
    je dirais simplement que nous n'avons pas la même approche du problème.

    Pour moi
    • tout le contenu qui est pertinent doit appartenir au document, title pouvant d'ailleurs en faire partie.
    • il est important de séparer les différentes couche HTML-CSS-JS ne serait ce que pour la maintenance et la clarté du code, même si quelques coups de canif sont parfois nécessaire.
    • tout ce qui peut se faire en HTML ou en CSS n'est pas à faire en javascript, il existera bien sûr toujours des exceptions.

    J'ai pris le temps de regarder ton code et de le tester après toutefois avoir corrigé un certains nombre de choses...

    <!DOCTYPE HTML5> n'est pas un DOCTYPE valide et à pour effet de faire passer ton document en mode QUIRKS et c'est ce qui permet à ton script de fonctionner.
    Avec un mode standard donc <!DOCTYPE HTML>, dans ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function showPopup(evt, text) 
    { 
        if (window.event)
        {
            evt = window.event;
        }
        var top = evt.clientY + document.body.scrollTop; 
        var left = evt.clientX + document.body.scrollLeft; 
        var p = document.getElementById("popup"); 
        p.innerHTML = text; 
        p.style.top = top; 
        p.style.left = left; 
        p.style.display = "inline"; 
    }
    il manque au moins 2 choses, les unités (px) pour les positions et la prise en compte de document.documentElement pour que cela fonctionne correctement et ce quelque soit le DOCTYPE utilisé.

    Exemple de fonction crossbrowser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function getMousePos( e){
      e = e || event;
      var dE = document.documentElement,
          dB = document.body,
    	    mX = e.pageX || ( e.clientX +( dE && dE.scrollLeft || dB && dB.scrollLeft || 0) -( dE.clientLeft || 0)),
    	    mY = e.pageY || ( e.clientY +( dE && dE.scrollTop  || dB && dB.scrollTop  || 0) -( dE.clientTop  || 0));
    	return({ x : mX, y : mY});
    }
    Ceci étant j'ai constaté le même rendu sur les 2 codes d'approche différentes.

    Voilà le principal étant que Claudine ait trouvé son bonheur.

  7. #27
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu as bien fais de corriger, j'avais fais ça à la va vite...

    Je partage ton avis de séparation html/css/javascript, là, on est bien dans un cas d'effet cosmétique que ni html, ni css ne savent faire pour le moment (enfin, à ma connaissance).
    Ta solution de "mouliner" le code à chaque fois que la page est affiché est une solution, la mienne est plus sous la forme d'une api javascript réutilisable (que je mettrais dans un fichier externe) et qui sera appelé à la demande... c'est ce que j'appelais "vision"...
    Généralement, je base mes api sur jQuery, ça m'évite de me soucier des différences entre navigateurs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour à tous,

    Désolée d'avoir resté muette aussi longtemps, mais on ne peut éviter les problèmes de santé .
    Je vous suis particulièrement reconnaissante pour l'aide efficace apportée dans la résolution de mes problèmes.
    A tous les membres merci et je sais que l'on peux compter sur vous.

    Claudine

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/07/2015, 18h01
  2. Comment créer un type puis l'utiliser dans une méthode ?
    Par montis dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 19/05/2012, 22h48
  3. Comment créer des variables pour chaque ligne d'une table
    Par Slyvore dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 24/04/2012, 14h24
  4. Réponses: 2
    Dernier message: 11/03/2009, 10h36
  5. Réponses: 1
    Dernier message: 28/12/2008, 13h05

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