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 :

event.pageX et event.pageY et événement ondrag


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut event.pageX et event.pageY et événement ondrag
    Bonjour à tous,

    Je m'initie au drag and drop en html5 et j'aimerais pouvoir scroller la page quant on est entrain de déplacer un élément et que l'on arrive sur les cotés de la fenêtre.

    Le problème est que les attributs event.pageX et event.pageY présents dans l’événement onmousemove ou encore onclick ne le sont pas dans ondrag et ils me seront utiles pour avoir les coordonnées du curseur.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <!DOCTYPE html>
    <html lang="fr">
    	<head>
    		<meta charset="utf-8">
    		<title>HTML5 : Drag & Drop</title>
    	</head>
    	<body>
    		<img id="img" src="images.jpeg" alt="" draggable="true"/>
    		<script type="text/javascript" src="jquery-1.7.1.min.js" ></script>
    		<script>
    			$(document).ready(function(){
    				//fonctionne
    				$("#img").on("click",function(e){
    					console.log(e.pageY);
    				});
     
    				//undefined
    				$("#img").on("drag",function(e){
    					console.log(e.pageY);
    				});
     
    				//undefined
    				$("#img").on("drag",function(e){
    					$(this).trigger("click");
    				});
     
    			});
    		</script>
    	</body>
    </html>
    J'aimerais donc savoir si vous avez une idée pour contourner ce problème.

    Merci.

  2. #2
    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 : 55
    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
    Par défaut
    Il suffit d'affecter un gestionnaire mousemove pendant le drag pour récupérer la position de la souris
    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

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Je ne comprend pas très bien ton explication. Pourrais tu me donner plus d'informations ?

  4. #4
    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 : 55
    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
    Par défaut
    Un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function draggedEvent(event){
        console.log(event.pageX + ' / ' + event.pageY);
    }
    $("#img").on("drag",function(){
        $(document).on('mousemove', draggedEvent);
    });
    $("#img").on("drop",function(){
        $(document).off('mousemove', draggedEvent);
    });
    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

  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 : 75
    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
    Bonjour

    Ne pas confondre jQuery et les nouveautés HTML5 !

    Comme jQuery veut être compatible IE6 et +, il n'y aura pas d'événement drag en jQuery sauf abandon du support des navigateurs obsolètes.

    Mais il y a jQuery UI Draggable et UI Droppable.

    Il me semble que l'événement par défaut est déjà un mouseevent qui contient tout ce qui est nécessaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <img src="../imageTest.png"  ondragstart="drag(event)">
     
    <div ondrop="drop(event)"></div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function drag( evt ){
    	console.log( evt ); // evt est déjà un mouseevent
    }
     
    function drop( evt ){
    	// evt idem
    }

    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
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Ça ne fonctionne pas .

    Le problème est que tout de suite après l'événement ondragstart, ondrag prend le relais et empêche tout autre événement de s'exécuter.

    Je ne peux donc pas utiliser onmousemove pendant le déplacement de l'élément.

    Le fait d'utiliser la fonction trigger() de jquery permet de remédier à ce problème mais il ne récupère pas les propriétés dont j'ai besoin (e.pageY et e.pageX).

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Je viens de vérifier, l'événement ondrag par défaut de javascript n'a pas les propriétés pageX, pageY ou encore clientX et clientY alors qu'elles sont présentes dans l'événement ondragstart.

    Existe-t-il un moyen de les récupérer ?

    Je n'utilise pas le plugin drag and drop de JQuery UI.

    Pour être plus précis dans ce que je suis entrain de faire, j'ai voulu apprendre à la fois à utiliser le drag and drop en html5 et la POO en créant un plugin JQuery qui permettrai d'échanger des éléments draggable.

    Étant donné le temps que j'y ai consacré, j'aimerai pouvoir contourner ce problème tout en continuant à utiliser les fonctionnalités d'HTML5.

Discussions similaires

  1. [Gestion des events] trop d'event dans ma queue
    Par hidewak dans le forum Allegro
    Réponses: 4
    Dernier message: 14/05/2013, 12h30
  2. Réponses: 4
    Dernier message: 22/11/2012, 14h46
  3. un event dans un event
    Par kenny49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/08/2006, 16h34
  4. event.pageX, Event.pageX, Event.clientX, event.x ... ?
    Par gg14bis dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/06/2005, 16h01
  5. [JButton][Event]Envoyer un événement
    Par willowII dans le forum Composants
    Réponses: 5
    Dernier message: 13/05/2005, 00h56

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