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

jQuery Discussion :

DOMMouseScroll et iframe


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut DOMMouseScroll et iframe
    Bonjour,

    J'ai un sousis que je ne parvient pas a résoudre.

    en faite quand je place un événement en Jquery pour recuperer le scroll de la molette de la souris, ca marche que dans la page sans Iframe et dans l'Iframe ce meme code ne fonctionne pas.

    Je vous montre l'exemple de code

    La page ou j'ai mon Iframe
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
    <head>
    	<script src="Data/Noyau/Js/jquery.min.js" type="text/javascript"></script>
    </head>
    <body>
    <iframe src="teste_frame.php" align="center" width="100%" frameborder="0" scrolling="no" id="iframe0"></iframe>
    </body>
    </html>

    et la page de l'Iframe (ou l'appel $(this).wheel() ne fonctionne pas)
    Code html : 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
    23
    24
    25
    26
    27
    28
    29
    30
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
    <head>
    	<script src="Data/Noyau/Js/jquery.min.js" type="text/javascript"></script>	
    </head>
    <body>
    <script>
    $.fn.wheel = function (callback) {
        return this.each(function () {
            $(this).on('mousewheel DOMMouseScroll', function (e) {
                e.delta = null;
                if (e.originalEvent) {
                    if (e.originalEvent.wheelDelta) e.delta = e.originalEvent.wheelDelta / -40;
                    if (e.originalEvent.deltaY) e.delta = e.originalEvent.deltaY;
                    if (e.originalEvent.detail) e.delta = e.originalEvent.detail;
                }
     
                if (typeof callback == 'function') {
                    callback.call(this, e);
                }
            });
        });
    };      
    $(this).wheel(function(e) {
                    e.preventDefault();
                    alert("scrool");
    });
    </script>
    </body>
    </html>

    Par contre si je fait (sur la page qui appel l'iframe)
    Code html : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
    <head>
    	<script src="Data/Noyau/Js/jquery.min.js" type="text/javascript"></script>
    </head>
    <body>
    <iframe src="teste_frame.php" align="center" width="100%" frameborder="0" scrolling="no" id="iframe0"></iframe>
    <script>
    $.fn.wheel = function (callback) {
        return this.each(function () {
            $(this).on('mousewheel DOMMouseScroll', function (e) {
                e.delta = null;
                if (e.originalEvent) {
                    if (e.originalEvent.wheelDelta) e.delta = e.originalEvent.wheelDelta / -40;
                    if (e.originalEvent.deltaY) e.delta = e.originalEvent.deltaY;
                    if (e.originalEvent.detail) e.delta = e.originalEvent.detail;
                }
     
                if (typeof callback == 'function') {
                    callback.call(this, e);
                }
            });
        });
    };      
    $(this).wheel(function(e) {
                    e.preventDefault();
                    alert("scrool");
    });
    </script>
    </body>
    </html>

    La sa fonctionne.

    Pourquoi ça ne fonctionne pas dans l'iframe ?

    Merci pour votre aide.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Le problème c'est le contenu de $( this ) ! Je vous suggère de faire un essai avec $( window.parent.document ).

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut
    Oui sa fonctionne si je suis sur la page qui possède l'<iframe>, mais pas quand je suis dans l'iframe.

    En faite mon Iframe est en pleine page et c'est de là que je voudrais recuperer l’événement.

    en gros j'ai un index et je fait des onglets en Jquery, et sur chaque onglet je fait des iframe qui sont en pleine page de plus les iframe sont entourer de div
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="tabs-1"><iframe></iframe></div>
    donc ce sélecteur $( window.parent.document ) ne fonctionne pas complètement. quand je change d'onglet sur mon programme, je ne récupère pas les événement de la molette de la souris.

    Merci encore.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 183
    Par défaut
    Bon j'ai resolu le probleme en diminuant la hauteur de mes iframe de 10px et le probleme c'est resolu. je c'est pas trop pourquoi, ça reste un mystère, mais bon c'est resolu.

    c'est bien $( this ) que je devais utiliser.

    PS: je ne trouve pas le \[CODEINLINE\] sur l’éditeur de message. je l'ai ecrit a la main ?

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par dad72 Voir le message
    PS: je ne trouve pas le \[CODEINLINE\] sur l’éditeur de message. je l'ai ecrit a la main ?
    Il n'y en a pas, je suis toujours obligé de le faire manuellement et cela commence à devenir énervant !

    Sur DVP, les utilisateurs de Firefox ont toujours été privilégiés, il y a même un outil, alors que les utilisateurs de Chrome ont toujours été considérés comme quantité négligeable. Il serait peut-être temps que cela change.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Rafraichissement periodique d'une iframe
    Par fxp17 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/01/2012, 17h56
  2. session, <iframe> et sécurité
    Par debie1108 dans le forum ASP
    Réponses: 16
    Dernier message: 22/05/2006, 11h57
  3. probleme avec IFRAME
    Par adilou1981 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 24/08/2005, 09h34
  4. Réponses: 7
    Dernier message: 17/12/2004, 18h47
  5. [jsp][struts] paramètre dans un iframe.
    Par ultimax dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/10/2004, 09h25

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