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 :

Connaitre la position du curseur dans un div enfant


Sujet :

JavaScript

  1. #21
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    je vais regarder cela

    mais avec mon code je sort et remet le div enfant ou voisin a volonté en utilisant le bouton gauche une fois que le div a été cliqué et donc que le cadre avec les 6 petit carré sont présents
    et que je le drag dans cette etat la pour une fois non c'est moins compliqué la condtion se fait tout seul

    bon c'est vrai que ca représente des manœuvres mais j'ai dans l'idée que quand je drague avec le bouton droit et que je déplace les dimension du parent
    removechild puis reconstruction sur l'élément qui sera déterminé par elementfrompoint comme ca je le ferais qu'avec le bouton droit

    après pour le déplacement bloqué oui je voulait déjà utiliser le (selection !="")

    je vais tester ton nouveau model

    trop fort ce Melka One !!!
    a tu essayé mon code ????? bon d'accords il est moins jolie mais tout de même
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #22
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    je l'avais essayé avec firefox et seule l'edition de texte marchait mais la je vient de l'essayé avec ie et je comprend mieux et sa marche asser bien
    Plus vite encore plus vite toujours plus vite.

  3. #23
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re et oui je suis obligé de faire avec IE le controlX (Web browser )utilisant ses librairies

    par contre je n'arrive toujours pas a remettre le menu contextuel en cas de sélection de texte
    on dirait que event.return false est définitif après le premier drag bouton droit
    j'ai essayé avec if button 1ou 2 >>>> marche pas
    j'ai essayé avec le mouse up >>>>marche pas
    c'est tordu ce truc
    impossible de le remettre

    event.return=false supprime bien l'évènement ????
    obj.oncontextmenu = function (event) { return false} supprime bien le menu contextuel tout du moins le bloque ????

    donc si je les remet a true ca devrait revenir non ????
    si oui reste a savoir ou ?????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #24
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    sinon il y a le bouton du milieux qui servirait a déplacé les elements
    Plus vite encore plus vite toujours plus vite.

  5. #25
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui sauf que tout le monde n'a pas les 3 bouton je sais c'est étonnant mais c'est encore le cas pour certains
    même si une souris plug inplay aujourd'hui peut couter moins de 5 euros

    il faudrait que je fasse un sondage sur cette question
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #26
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    devant la complexité de la "position" mes intégration de div seront en position "absolute"

    il me reste donc :
    1) le menu contextuel OK si il y a sélection de texte

    2) au mouseUP vérifier si le div est toujours dans son parent

    3) si c'est pas le cas alors changer son parent pour celui dans le quel il est par rapport a ses coordonnées
    et cela toujours avec le clic droit

    comme ca je serait plus libéré pour le clic gauche
    je rajouterait un bouton dans la barre d'outils du WYSIWYG pour le remettre en static au cas ou je voudrais le center par rapport au document par exemple
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #27
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    attention a la position absolute qui met un element hors du flux du document et au niveau rendu sa va pas etre top surtout qu'il existe plusieurs résolution. Les remetre en static par la suite modifiera la position des elements
    Plus vite encore plus vite toujours plus vite.

  8. #28
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    peut on mettre un div enfant en dessous le parent evec z-index????????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #29
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    c'est pas possible
    Plus vite encore plus vite toujours plus vite.

  10. #30
    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
    Bonjour,
    peut on mettre un div enfant en dessous le parent evec z-index????????
    cela est possible sous certaines conditions, voir exemple ci dessous.
    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
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <style>
    #main {
      width: 10em;
      height: 10em;
      background: #cde;
    }
    #main div {
      position:relative;
      z-index:-1;
    }
    </style>
    </head>
    <body>
      <div id="main">
        <div>In the DIV</div>
      </div>
    </body>
    </html>

  11. #31
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    que l'enfant soit en absolute ou relative mais pas en static
    Plus vite encore plus vite toujours plus vite.

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir nosMoking et Melka One

    désolé pour le retard mais grosse journée aujourd'hui

    de toute les façon et ca c'est une certitude les div enfant seront en position absolute

    apres hier avec ce ras le bol de ne pas tout avoir j'ai réouvert toute mes source sur ek editor,tini editor ,epeckeditor etc... j'en ai plein !!!


    j'ai donc comment il se comportais vis avis des drag && drop des div
    alors difficile pour moi d'aller chercher la technique vu que les js sont pas indenté c'est une horreur pour moi
    mais j'ai retenue une chose qui est commune a tous

    AUCUN N' A LE MENU CONTEXTUEL D'ORIGINE IL SEMBLERAIT QUE CELA SOIT DIFFICILE

    j'ai aussi remarqué que tous drag avec le mouse gauche ( la je sombre dans la dépression) puis un coup de lune a 'a donné l'idéede revoir tout mes essaies des ces quelques jours
    et finalement j'ai trouver une solution simple c'est pas joli ,pas pro mais ca marche


    si je clique sur les bord pas de drag apparition des poignées de redimensionnement
    si je mousdown avec bouton gauche et bouge je drag
    si les poignées de redimensionnement sont présentes et que je reclique ou dblclick ca se met en mode Edition

    voila le code hyper simple

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <!DOCTYPE HTML>
    <html>
      <head>
       <title>patrick WYSIWYG html </title>
       <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=10"> 
    <style>
    </style>
    <script  type= "text/javascript">
    var Ed=document.getElementById("editeur");
    var DX,DY;
    var dragged;
    /////////////////////////////////////fonction stop drag////////////////////////////////////////////////////////////
    function drag_onmouseup() {if( dragged!=null){dragged = null; editeur.contentEditable="true"; } }  //On arrête le drag&drop}
    //////////////////////////////////////////////fontion de position ///////////////////////////////////////////////////
    function WhereMouse( ){
    if(dragged!=null){
    Mouse_X= event.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);Mouse_Y = event.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
    Mouse_X-= DX;Mouse_Y-= DY;    dragged.style.position = 'absolute';    dragged.style.left = Mouse_X  + 'px';    dragged.style.top = Mouse_Y + 'px';    dragged.style.position="absolute";    }
    }
    ////////////////////////////////////////////////////////ajout des evenements mousemove et mouse up de l'object document///////////////////////
    typeof window.addEventListener == 'undefined' ? document.attachEvent("onmousemove",WhereMouse) : document.addEventListener('mousemove',WhereMouse,false);
    typeof window.addEventListener == 'undefined' ? document.attachEvent("onmouseup",drag_onmouseup) : document.addEventListener('mouseup',drag_onmouseup,false);
    typeof window.addEventListener == 'undefined' ? document.attachEvent("onmousedown",gripp) : document.addEventListener('mousedown',gripp,false);
    //////////////////////////////////////////////////////////////////////////////////////////////////////////
    function gripp(){
    if(event.button==1){
    X= event.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);Y = event.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
     var obj=document.elementFromPoint(X,Y);
    if ( obj.className=="divint" ){var rect = obj.getBoundingClientRect (); var L = rect.left; var T = rect.top; var W = rect.width;var H = rect.height;
    if(X>L+8 && X<(L+W)-8 && Y>T+8 && Y<(T+H)-8){event.returnValue = false; if( event.preventDefault ) event.preventDefault();DX=0;DY=0; DX=X-obj.offsetLeft; DY=Y-obj.offsetTop;
     dragged=obj;editeur.contentEditable="false";}} }}
    /////////////////////////////////////////////////////////////////////////////////
    function selectionne_text(){return window.getSelection().getRangeAt(0);}   
     
    ////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    function insertdiv(){
     
    var ed=document.getElementById("editeur")
    var nextdiv="div"+ed.getElementsByTagName("div").length    
     var selection = selectionne_text();
     
    var selectedText = selection.extractContents();
       var balise = document.createElement('div');
       balise.className="divint";balise.id=nextdiv;
       balise .style.width=200+"px";balise .style.height=200+"px";
    balise.style.borderRadius = "6%";  balise.style.border="1px solid black";   
     
     if (selection.length !=""){balise.appendChild(selectedText ); selection.insertNode(balise); }
     
                           if (selection.length ==""){balise.style.position="absolute";                           
                           balise.style.left=nextX+"px";balise.style.top=nextY+"px"  ;balise.innerHTML="<p>&nbsp;</p>";ed.appendChild(balise);}
     
     
     }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    </script>
    </head>
    <body>
     <button  onclick="insertdiv()"> ajouter un div </button>
     <div  id="editeur"contenteditable="true" style="height: 600px; width: 700px;border:1px solid black;">
     <p> du texte dans l'editeur</p>
     
         <div  id="div1" class="divint" oncontextmenu=false style="width:250px;height:250px;border:1px solid red;" ><p> du texte dans mon div </p>
           <div  id="div2" class="divint" style="width:200px;height:200px;border:1px solid blue;" ><p>du texte dans celui ci </p>
                <div  id="div3" class="divint" style="width:100px;height:100px;border:1px solid green;" ><p>celui la aussi   </p>
                </div>
         </div>
     </div>
    </div>
    </body>
    </html>
    qu'en pensez vous on valide ???
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #33
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    sa marche mais tu l'a constaté ce que tu cherche a faire est très complexe car il faut prendre en compte le positionnement de l’élément (absolute,static,relatif) sans oublié les float(left, right) et aussi que le positionnement d’éléments static se fait avec les marges celui en absolute avec top et left celui en relatif avec top left et les marge et qu'avec float c'est avec la marge soit droite soit de gauche et en plus de tous ca si on doit consieré les enfant des enfants des enfant y'a du travail.

    fait au plus simple en copiant sur ce que font les autres ou relève le défit de faire un super éditeur que tous le monde t’enviera.

    du coup je me suis pris au jeux en améliorant mon script et je sais pas quand je vais arrête

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    <!DOCTYPE html>
     
    <html>
    <meta charset="UTF-8">
    <head>
    <style type="text/css">
     
    body{
    font-family:Verdana, Geneva, sans-serif;
    background-color:#9688ab;
    }
     
    .Style0 {
     
    width:200px;
    height:150px;
    border-style:groove;
    border-width:2px;
    background-color:#da9936;
    }
     
    .Style1 {
     
     
    border-style:groove;
    border-width:2px;
    background-color:#da9936;
    margin:20px;
    }
     
    </style>
    <script type="text/javascript">
     
     
    function selectionne_text(){return window.getSelection().getRangeAt(0);}
     
    function creation(){
     
    	var dv=document.createElement("div");
     
    	dv.addEventListener("mousedown", obj_drag.sp, false);
    	dv.style.width=prompt("largeur")+"px"
    	dv.style.height=prompt("hauteur")+"px"
    	dv.style.background=prompt("couleur de fond")
    	dv.setAttribute("data-drag","true")
    	document.getElementById("editeur").appendChild(dv);
     
     
    }
     
     
    var obj_drag={
     
    elemdrag:null,
    decx:null,
    decy:null,
    elx:null,
    ely:null,
    drg:"no",
    largeur:1024/100,
    gauche:true,
     
    sp:function(evt){
     
    	if(evt.button==1){
     
    		if(evt.type=="mousedown" && selectionne_text()==""){
     
    			document.getElementById("editeur").setAttribute("contenteditable","false")
     
    			obj_drag.elemdrag=evt.target;
     
    			while(!obj_drag.elemdrag.hasAttribute("data-drag")){
     
    			obj_drag.elemdrag=obj_drag.elemdrag.parentNode
     
    			}
    			var bound=obj_drag.elemdrag.getBoundingClientRect()
    			obj_drag.decx=evt.pageX;
    			obj_drag.decy=evt.pageY;
     
     
    			obj_drag.gauche=document.getElementsByName('marge')[0].checked ? true : false;
     
    			if(obj_drag.gauche){
    				obj_drag.elx=parseInt(getComputedStyle(obj_drag.elemdrag,null).marginLeft);
    			}
    			else{
    				obj_drag.elx=parseInt(getComputedStyle(obj_drag.elemdrag,null).marginRight);
    			}
     
    			obj_drag.ely=parseInt(getComputedStyle(obj_drag.elemdrag,null).marginTop);
     
    			evt.preventDefault();
    			document.documentElement.addEventListener("mousemove", obj_drag.posi, false);
    			obj_drag.elemdrag.addEventListener("mouseup", obj_drag.sp, false);
    			obj_drag.elemdrag.removeEventListener("mousedown", obj_drag.sp, false);
    			obj_drag.drg="ok";
    		}
     
    		else if(evt.type=="mousedown" && selectionne_text()!=""){
     
    			evt.stopPropagation();
    			alert("du texte a ete selectionné")	;
     
    		}
     
     
    		if(evt.type=="mouseup" && obj_drag.drg=="ok"){
     
    			document.documentElement.removeEventListener("mousemove", obj_drag.posi, false);
    			obj_drag.elemdrag.removeEventListener("mouseup", obj_drag.sp, false);
    			obj_drag.elemdrag.addEventListener("mousedown", obj_drag.sp, false);
     
    			obj_drag.drg="no";
     
    			document.getElementById("editeur").setAttribute("contenteditable","true");
    		}
    	}
    },
     
    posi:function(evt){
     
     
    	obj_drag.ely=obj_drag.ely - obj_drag.decy + evt.pageY
     
    	if(obj_drag.gauche){
     
    		obj_drag.elx=obj_drag.elx - obj_drag.decx + evt.pageX
    		obj_drag.elemdrag.style.marginLeft=Math.round(obj_drag.elx/obj_drag.largeur)+"%";
    	}
    	else{
     
    		obj_drag.elx=obj_drag.elx + (obj_drag.decx - evt.pageX)
    		obj_drag.elemdrag.style.marginRight=Math.round(obj_drag.elx/obj_drag.largeur)+"%";
    	}
     
     
    	obj_drag.elemdrag.style.marginTop=obj_drag.ely+"px";
     
    	document.getElementById("mgx").value=Math.round(obj_drag.elx/obj_drag.largeur)+"%";
    	document.getElementById("mgy").value=obj_drag.ely+"px";
     
    	obj_drag.decx =evt.pageX;
    	obj_drag.decy =evt.pageY;
     },
     
    init:function(){
     
      var all=document.getElementsByTagName('*');
     
      for(var i=0;i<all.length;i++){
     
       if(all[i].hasAttribute("data-drag")){
     
        all[i].addEventListener("mousedown", obj_drag.sp, false);
       }
      }
     }
    }
    addEventListener("load", obj_drag.init, false);
     
    </script>
    </head>
    <body>
    <button onclick="creation()">ajouter</button>
    marge gauche:<input type="radio" name="marge"value="gauche"checked> marge droite<input type="radio" name="marge" value="droite"><input type="texte" id="mgx"/>
    marge haut:<input type="texte" id="mgy"/>
     
     
     
     
     <div id="editeur" contenteditable="true" style="margin:auto;width:1024px;border:1px solid black;">
     
     <p> du texte dans mon div </p>
     
     <div class="Style0" style="float:left;margin-right: 20%;" data-drag="true"><p> du texte dans mon div </p>
    </div>
     
    <div class="Style0" style="float:right;top: 56px; margin-left: 5%;" data-drag="true">blablabla
    </div>
     
    <div class="Style1" style="top: 404px; left: 399px;" data-drag="true"><p> du texte dans mon div </p>
    <div class="Style0" style="top: 20px;width:100px;height:100px; left: 71px;" data-drag="true"><p> du texte dans mon div </p>
    </div>
    </div>
     
     
    </div>
    </body>
    </html>
    Plus vite encore plus vite toujours plus vite.

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui les position c'est assez complexe moi ce qui me gene c'est de ne pas trouver comment faire sans etre obligé d'utiliser le stratagèmes du "RECT"

    et je pense pas avoir besoins que l'on m'envie je pense que je perdrait beaucoup d'amis


    et je suis quand même a avoir tenter et réussi a piloter un éditeur par VBA pour mon maileur CDO

    démo de mon maileur CDO VBA
    Nom : demo2.gif
Affichages : 254
Taille : 977,6 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #35
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    oui il me plait
    Plus vite encore plus vite toujours plus vite.

  16. #36
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir

    une solution propre serait de détecter quand le cursor change d icon

    en effet quand je suis en mouseover sur un div a l'intérieur d'un content éditable le cursor prend l'apparence "move" et "xx-resize" quand je suis sur les bord au niveau des poignées

    donc la question est:

    est ce que en JavaScript on peut au mousedown détecter l'icon du cursor (savoir si il est en "xx-resize" ou "move")
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #37
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    normalement on controler le css pour le curseur mais comme il s'agit d'un contenteditable je sais pas si c'est déclaré dans le css il faudrait faire un teste la syntaxe est la suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(getComputedStyle(refrence_a_element,null).cursor)
    celle ci peut suffire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(refrence_a_element.style.cursor)
    Plus vite encore plus vite toujours plus vite.

  18. #38
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir Melka One
    tu a oublié un "e" a "reference"

    c'est la première la bonne sauf que la encore c'est une piste a refermer puisque j'ai en retour "auto" et c'est normal puisqu'il change tout seul en fonction de la ou je suis sur le div

    ca fait ch.....!!!! javascript a tourner autour du pot comme ca !!!!

    c'est incroyable qu'avec une prétendue puissance aussi importante de ce langage qu' il faille écrire un roman de de plus de 150 lignes pour récupérer des positions et deux états

    ca ca me rend fou !!!!!

    en vbs 150 lignes serait le wysiwyg tout entier presque

    je suis désespéré au point d'abandonner le move des divs ma dernière solution fonctionne mais sur un portable c'est a 2 ou 3 reprise que l'on arrive a choper les bords sachant que j'ai laisser 8 pixel de marges je veux beaucoup plus fluide

    merci pour le retour
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #39
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut solution a 99% trouvée
    Bonjour a tous

    voila j'ai trouvé ma solution pour rendre plus fluide la manipulation

    en fait ce qui me bloquait c'était le "event=return false" ca bloquait l'apparition des poignées ce qui m'obligeait a utiliser le stratagèmes de la position exacte dans le div pour n'utiliser que les bords pour le redim et le reste pour le drag


    maintenant en cherchant je suis tombé sur des exemples sur les fonctions "ondragstart",ondragover","ondragend","ondrop,



    alors effectivement avec on peut passer un élément a un autre en toute fluidité

    sauf que moi je veux tout!! et oui je suis un toulonnais

    je veux le déplacement et l'affiliation comme avec ondrop
    problème avec on drg...et ondrop je n'ai pas le déplacement

    mais j'ai utilisé ondragstart pour déclencher le déplacement ainsi je ne suis plus bloqué avec le eventreturn false combiné a mousemove du document
    et cela fonctionne parfaitement bien
    des que je mouse down dans le div j'ai les poignées de redim si je reste appuyé en me déplaçant je déplace le div *
    par la même occasion je ne suis plus obligé de mettre a false le content éditable pendant le déplacement et a true au relâchement du bouton gauche souris

    seul bémol je n'arrive pas a affilier le div a son nouveau parent ,ne pouvant pas utiliser ondrop cela est exclu bien sur sinon dynamiquement je devrais supprimer et ajouter des event
    d'autant plus que le on drop fonctionne au relâchement de la souris sur le div récepteur hors en dessous la souris (curseur) j'ai mon div en déplacement c'est balo!!

    bref si vous avez une solution je prends

    l'affiliation doit avoir lieu dans le mouseup du document
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <!DOCTYPE HTML>
    <html>
      <head>
       <title>patrick WYSIWYG html </title>
       <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=10"> 
    <style>
    </style>
    <script  type= "text/javascript">
    var Ed=document.getElementById("editeur");
    var DX,DY;
    var dragged;
    typeof window.addEventListener == 'undefined' ? document.attachEvent("onmousemove",WhereMouse) : document.addEventListener('mousemove',WhereMouse,false);
    typeof window.addEventListener == 'undefined' ? document.attachEvent("onmouseup",drag_onmouseup) : document.addEventListener('mouseup',drag_onmouseup,false);
    function drag_onmouseup(ev) {
    if (dragged!=null){ 
    //var x=dragged.style.left;x=x.substring(0,x.length-2)-3;
    //var y=dragged.style.top;y=y.substring(0,y.length)-3;
    //var par=dragged.parentElement;
    //HT=dragged.outerHTML;
    //var obj=document.elementFromPoint(x,y);
    //if (obj.id!="editeur"){
    //par.removeChild(dragged);
    //var Pht=obj.innerHTML+HT;
    //obj.innerHTML=Pht;
    //}
    }
    dragged=null
    }  //On arrête le drag}
     
    function dragstart(ev) {
        ev.dataTransfer.setData("text", ev.target.id);
    dragged=ev.target;
    X= event.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);Y = event.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
    DX=0;DY=0; DX=X-dragged.offsetLeft; DY=Y-dragged.offsetTop;event.returnValue = false; if( event.preventDefault ) event.preventDefault();
    }
     
    function WhereMouse( ){
    if(dragged!=null){
    Mouse_X= event.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);Mouse_Y = event.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
    Mouse_X-= DX;Mouse_Y-= DY;    dragged.style.position = 'absolute';    dragged.style.left = Mouse_X  + 'px';    dragged.style.top = Mouse_Y + 'px';    dragged.style.position="absolute";    }
    }
     
    </script>
    <body>
     <button  onclick="insertdiv()"> ajouter un div </button>
     <div  id="editeur"contenteditable="true" style="height: 600px; width: 700px;border:1px solid black;">
     <p> du texte dans l'editeur</p>
     
         <div  id="red" class="divint" ondragstart="dragstart(event)"  style="width:250px;height:250px;border:1px solid red;" ><p> du texte dans mon div </p></div>
     
    <div  id="blue" class="divint" ondragstart="dragstart(event)"style="width:200px;height:200px;border:1px solid blue;" ><p>du texte dans celui ci </p></div>
                <div  id="green" class="divint" ondragstart="dragstart(event)"style="width:100px;height:100px;border:1px solid green;" ><p>celui la aussi   </p></div>
     
     
     
    </div>
    </body>
    merci pour les retours
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  20. #40
    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 On s'égare !
    voila j'ai trouvé ma solution pour rendre plus fluide la manipulation...
    Je dois admettre que j'ai décroché depuis un moment, et que je ne compte pas raccrocher d'ailleurs, pour la raison simple que l'on est bien loin de l'origine de l'ouverture de cette discussion qui il faut le rappeler est « Connaitre la position du curseur dans un div enfant ».
    Il est préférable d'ouvrir une discussion par question afin de ne pas perdre le fil de la discussion et de laissez la possibilité aux visiteurs de bénéficier des réponses en leur offrant un sujet moins dispersé.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [AC-2007] Connaitre la position du curseur dans un textbox
    Par cherifarouk dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/03/2011, 14h49
  2. position de curseur dans div
    Par Sanceray3 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/03/2010, 18h14
  3. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02
  4. Position du curseur dans un TMemo
    Par yokito dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2003, 16h35
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09

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