Partage
  • Partager sur Facebook
  • Partager sur Twitter

AJAX > récupérer les coordonnées d'un clic dans une div

Sujet résolu
    27 octobre 2010 à 16:25:43

    Salut les zéros !

    Je suis dans l'impasse face à un problème qui m'est posé par la récupération des coordonnées d'un clic sur une image dans une div (comme l'indique le titre :D).
    En gros, j'ai une image dans une div, sur laquelle je voudrais insérer un bloc de texte, et pour cela il me faut les coordonnées x,y du "coin supérieur droit" -> là où je vais cliquer.
    J'ai essayé de passer par du JS en utilisant les classiques img.x / img.y. Mais ceci me renvoie le x,y du coin supérieur gauche de l'image, peu importe où je clique sur celle-ci.
    J'ai ensuite tenté de remplacer mon image par une balise <input type="image">, laquelle envoie en POST les coordonnées correctes du clic sur l'image, MAIS recharge la page et du coup bah je me retrouve avec les coordonnées certes, mais j'ai paumé en route toutes les autres infos de mon image et l'image elle-même :D Suite à ça j'ai tenté de mettre
    Certes je pourrais probablement bidouiller pour la reconstruire, mais ça demanderait pas mal de triturage pour un résultat que l'on peut très probablement atteindre d'une façon plus propre. J'ai pas mal sillonné le net à la recherche d'infos plus précises, en vain.
    Si quelqu'un a une idée je suis donc tout ouïe :D
    Il y a sûrement un truc à appronfondir avec le JS mais mes connaissances sont assez limitées à ce niveau là :(

    Ma fonction JS de test (que j'ai trituré en long/large/travers depuis) (avec le onClick=coord() qui va bien sur la balise <img>)
    function coord()
    				{
    					var o = document.form_imgbuild;
    
    					alert ('ici');
    					alert (o.img.x);
    					alert (o.img.y);
    					alert (document.getElementById('img').x);
    					alert (document.getElementById('img').y);
    				}
    


    La balise input changée en image (que j'ai là aussi pas mal trituré, entre l'event JS, le return false etc) :

    $img_link = "<input type=\"image\" src=\"images/tmp/mini_".$this->name."\" onClick=\"ajax_load_img(); \"/></form>";
    



    La fonction ajax, elle, marche correctement. C'est simplement la récupération des coordonnées qui me pose un réel soucis.
    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2010 à 16:42:52

      Je jette un coup d'oeil merci !
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2010 à 17:19:20

        J'ai intégré à ma fonction js celle que tu as link pour la récupération des coordonnées du clic, ça marche parfaitement :) J'ai juste été obligé de bidouiller un peu pour me passer du .onclick sur l'event étant donné que j'avais déjà un onclick sur mon formulaire bref ça marche :)

        Pour ceux que ça peut intéresser :

        $img_link = "<img id=\"imgElem\" src=\"images/tmp/mini_".$this->name."\" onClick=\"ajax_load_img(event);\"/>";
        


        function ajax_load_img(clickedImage)
        {
        	var o = document.form_imgbuild;
        	var url = 'ajax_imagebuilder.php';
        	var div = 'div_img_result';
        	var data = 'action=show_interface';
        
        	data += '&img_name='+ o.img_base.value;
        
        	if(clickedImage) {
        		var el = document.getElementById('imgElem');
        		getCoordClick = function(clickedImage) {
        			var ox = -el.offsetLeft,
        			oy = -el.offsetTop;
        			while(el=el.offsetParent){
        				ox += el.scrollLeft - el.offsetLeft;
        				oy += el.scrollTop - el.offsetTop;
        			}
        			
                                var x = clickedImage.clientX + ox;
        	                var y = clickedImage.clientY + oy;
        	                var action_2 = o.action_2.value;
        	                var txt = o.add_txt.value;
        	                var r = o.r.value;
        	                var g = o.g.value;
        	                var b = o.b.value;
        
        	                data += '&action_2=' + action_2;
        	                data += '&txt=' + txt;
        	                data += '&x='+ x +'&y=' + y;
        	                data += '&r=' + r +'&g=' + g + '&b=' + b;
        	         }
        	         getCoordClick(clickedImage);
                }
                AAWrite2(url, data, 'div', div);
        }
        


        Un grand merci :D
        • Partager sur Facebook
        • Partager sur Twitter

        AJAX > récupérer les coordonnées d'un clic dans une div

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown