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

Bibliothèques & Frameworks Discussion :

Drag'n'Drop simple et Internet Explorer [script.aculo.us]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 102
    Par défaut Drag'n'Drop simple et Internet Explorer
    Bonjour,

    Je cherche a rendre draggable un "div". Mon code ne fonctionne pas sous internet explorer. Quel qu'un a une idée.. un lien ?
    (fonctionne sous FF2, Opera,Safari.. mais ni IE6, ni IE7)

    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
     
    <html>
           <head>
     
                 <script type="text/javascript" src="js/prototype.js"></script>
                 <script type="text/javascript" src="js/scriptaculous.js"></script>
                <script type="text/javascript" src="js/dragdrop.js"></script>
     
          </head>
          <body>
     
               <div id="test" style="cursor:pointer;"  >AAAAAA</div>
               <input type="button" onclick="new Draggable('test');" />
     
           </body>
    </html>

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Salut , sans vouloir réinventer la roue, voici un script que j'avais fait il y a un petit moment , qui n'est pas du tout intrusif ( c'est a dire qu'il ne pollue pas le reste du 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
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>classe d'élement déplaçable</title>
    <style type="text/css">
    .boiteBleu{
    background-color:#C1D8E8;
    width:300px;
    height:300px;
    }
    .boiterouge{
    background-color:red;
    width:150px;
    height:150px;
    }
    .drag{
    border:2px dashed #F1CEC5;
    cursor:move;
    }
    </style>
    <script type="text/javascript">
    /*######################################
    script permettant de rendre déplaçable
    les éléments qui ont la classe définit
    en paramètre
    ######################################*/
     
    var classMove = "drag";
    var myObjectClick = null;
    var movable = false;
    var positionXAtClick = null;
    var positionYAtClick = null;
    var positionXMyobjectClick = null;
    var positionYMyobjectClick = null;
     
    //Fonction permettant d'initialiser les listeners
    function init_evenement(){
    //On commence par affecter une fonction à chaque évènement de la souris
    if(window.attachEvent){
    document.onmousedown = start;
    document.onmousemove = drag;
    document.onmouseup = drop;
    }
    else{
    document.addEventListener("mousedown",start, false);
    document.addEventListener("mousemove",drag, false);
    document.addEventListener("mouseup",drop, false);
    }
     
    }
     
    //Fonction permettant de récupèrer l'objet sur lequel on a clické, et l'on récupère sa classe
    function start(e){
    //On initialise l'évènement s'il n'a aps été créé ( sous ie )
    if(!e){
    e = window.event;
    }
    //Détection de l'élément sur lequel on a clické
    monElement = (e.target)? e.target:e.srcElement;
     
    if(monElement)
    {
    //On appel la fonction permettant de récupèrer la classe de l'objet et assigner les variables
    getClassDrag(monElement);
    if(myObjectClick){
    positionXAtClick = e.clientX;
    positionYAtClick = e.clientY;
    positionXMyobjectClick = parseInt(myObjectClick.offsetLeft);
    positionYMyobjectClick = parseInt(myObjectClick.offsetTop);
    return false;
    }
    }
    }
     
    function drag(e){
    //On initialise l'évènement s'il n'a aps été créé ( sous ie )
    if(!e){
    e = window.event;
    }
     
    //Si l'objet est déplaçable et qu'il existe
    if(movable && myObjectClick){
    myObjectClick.style.position = "absolute" ;
    //On récupère la position de la souris par rapport à l'objet
    myObjectClick.style.left = e.clientX + ( positionXMyobjectClick - positionXAtClick ) + "px";
    myObjectClick.style.top = e.clientY + ( positionYMyobjectClick - positionYAtClick ) + "px";
    return false;
    }
     
    }
     
    function drop(){
    myObjectClick = null;
    movable = false;
    positionXAtClick = null;
    positionYAtClick = null;
    positionXMyobjectClick = null;
    positionYMyobjectClick = null;
    }
     
     
    function getClassDrag(myObject){
    with(myObject){
    var x = className;
    listeClass = x.split(" ");
    //On parcours le tableau pour voir si l'objet est déplaçable
    for(var i = 0 ; i < listeClass.length ; i++){
    if(listeClass[i] == classMove){
    movable = true;
    myObjectClick = myObject;
    }
    }
     
    }
    }
     
     
     
    window.onload = init_evenement;
    </script>
     
    </head>
     
    <body>
    <div class="boiteBleu drag"></div>
    <div class="boiterouge drag"></div>
    <div class="drag">et avec du contenu</div>
    <div class="boiteBleu"></div>
    <input type="text" class="drag" style="width:300px" />
    </body>
    </html>
    Bon courage pour la suite

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 102
    Par défaut
    Merci pour cette réponse. Je m'en servirai si je ne trouve pas de reponse avec scriptaculous. Mais comme j'utilise ce framework pour d'autres truc. Je préferai tout gérer avec.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Avec le srcipt que je t'ai fournis , il n'y a rien a faire sur tes div, juste leur ajouter la class "drag"
    pour ton exemple , n'ayant scriptoculous sous la main , je ne peux malheureusement t'aider ... après tout dépend de ce que tu désire faire ... si c'est du simple drage and drop , ou encore de la gestion de bloc les uns par rapports aux autres....

    Bon courage et si tu as 2 minutes test mon exemple

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 102
    Par défaut
    J'ai testé cela fonctionne bien, mais je ne peux pas l'intégrer correctement à mon site. le système de renommage de "class" ne m'arrange pas. et une fois intégrer au site... le drag n drop ne fonctionne pas (je ne sais pas du tout pourquoi.. peut-etre a causes des autre librairies que j'utilise)

    Je cherche donc toujours de l'aide sur scriptaculous et internet explorer.. un lien vers de la doc .. je suis preneur également

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Peut etre ici

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

Discussions similaires

  1. drag and drop Internet Explorer
    Par julien1451 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2010, 10h54
  2. [WD14] Drag and drop de ma liste vers l'explorer
    Par law56100 dans le forum WinDev
    Réponses: 0
    Dernier message: 13/10/2009, 09h53
  3. Faire bouger un clip (simple drag and drop)
    Par yoyot dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 15/12/2007, 20h13
  4. Drag&Drop applications exterieures et explorer
    Par krokmitaine dans le forum Delphi
    Réponses: 5
    Dernier message: 15/11/2006, 18h46
  5. Treeview: drag'n'drop à la windows explorer
    Par Gaadek dans le forum Delphi
    Réponses: 2
    Dernier message: 15/06/2006, 11h22

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