Comment faire un drag and drop avec joomla sur un Mobile

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • yvos06
    a répondu
    bonjour
    Après 3 jours de recherche je n'arrive toujours pas a faire un drag an drop sur un mobile ?
    Mème en utilisant un button je n'arrive pas a le sélectionner en le touchant sur un mobile ?

    Des idées de recherche ?

    Merci pour votre aide

    Laisser un commentaire:


  • yvos06
    a répondu
    Bonjour
    Merci pour votre aide
    Mais Hélas cela ne change Rien

    bonne journée


    Laisser un commentaire:


  • pmleconte
    a répondu
    Dans votre exemple, vous gérez drag&drop qui ne sont pas gérés (ou mal) par les mobiles.

    J'ai trouvé un complément à ajouter pour convertir les événements "touch" en événements drag&drop. Ci-après le code à ajouter à votre code actuel.

    Code PHP:
    /**   * Lightweight script to convert touch handlers to mouse handlers  
    * credit: http://stackoverflow.com/a/6141093   */  
    (function() {  
     function 
    touchHandler(e) {  
     var 
    touches e.changedTouches;   var first touches[0];   var type "";      
     switch(
    e.type) {  
       case 
    "touchstart":  
              
    type "mousedown";  
             break;  
       case 
    "touchmove":  
              
    type="mousemove";  
              break;  
        case 
    "touchend":  
              
    type="mouseup";  
              break;   default:  
         return;  
        }        
        var 
    simulatedEvent document.createEvent("MouseEvent");  
        
    simulatedEvent.initMouseEvent(typetruetruewindow1first.screenXfirst.screenYfirst.clientXfirst.clientYfalsefalsefalsefalse0null);
        
    first.target.dispatchEvent(simulatedEvent);  
        
    e.preventDefault();  
     }      
     function 
    init() {  
        
    document.addEventListener("touchstart"touchHandlertrue);  
        
    document.addEventListener("touchmove"touchHandlertrue);  
        
    document.addEventListener("touchend"touchHandlertrue);  
        
    document.addEventListener("touchcancel"touchHandlertrue);  
     }      
    init();  
    })(); 
    Je n'ai pas essayé mais cela devrait faire l'affaire.

    Pascal
    Dernière édition par pmleconte à 09/11/2019, 14h50

    Laisser un commentaire:


  • yvos06
    a répondu
    Merci pour votre réponse
    Sur le PC j'ai juste codé dans un article en HTML5 et java.
    Et avec la souri le rendu correspond, mais sur un mobile impossible de sélectionner les mots avec l’écran tactile pour les faire glisser !
    de plus je ne vois pas comment je peux faire un plugin ?
    J'utilise ceux que joomla fourni, je suis incapable d'en faire un !
    Si cela peut vous aider, voila le code ecrit dans l'article joomla

    <script>

    var ch=5;
    var i=parseInt(ch);

    function dragstart_handler(ev) {
    // On ajoute l'identifiant de l'élément cible à l'objet de transfert
    ev.dataTransfer.setData("application/my-app", ev.target.id);
    ev.dataTransfer.dropEffect = "move";
    }

    function dragover_handler(ev) {
    ev.preventDefault();
    ev.dataTransfer.dropEffect = "move"
    }

    function drop_handler(ev) {
    ev.preventDefault();
    // On obtient l'identifiant de la cible et on ajoute l'élément déplacé au DOM de la cible
    //var data = ev.dataTransfer.getData("application/my-app");
    //ev.target.appendChild(document.getElementById(data ));

    var chaine = "<div id="targetB" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/TEST/Buzz.png" width="250" height="350" alt="Buzz" style="float: right;" /></div>"

    var element=document.getElementById("targetB");
    document.getElementById("targetB").innerHTML=chain e;

    var audioElement = new Audio('/j3.3.6/images/TEST/buzz.mp3');
    audioElement.play();


    i=i-1;

    if (i < 1)
    {
    var cfinal="A votre avis, &ccedil;a ne marche pas ou les comp&eacute;tences n&rsquo;ont pas de sexe ?";
    var element2=document.getElementById("Cpt");
    document.getElementById("Cpt").innerHTML=cfinal;
    ce06();
    } else {
    setTimeout(buzzablanc,1000);
    var element1=document.getElementById("Cpt");
    var chaine1 = "Il vous reste ";
    var chaine2 = i.toString() ;
    var chaine3 = " essais";
    var chaine4 = chaine1+chaine2+chaine3;
    document.getElementById("Cpt").innerHTML=chaine4;

    }
    }

    function buzzablanc() {
    var chaine2 = "<div id="targetB" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/TEST/Buzz0.png" width="250" height="350" alt="Essaye Encore" style="float: right;" /></div>";
    var element=document.getElementById("targetB");
    document.getElementById("targetB").innerHTML=chain e2;

    }

    function ce06() {
    var chaine = "<div id="targetB" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/LogoCE06.JPG" width="250" height="350" alt="FIN" style="float: right;" /></div>";
    var element=document.getElementById("targetB");
    document.getElementById("targetB").innerHTML=chain e;

    }


    </script>

    <html manifest="manifest.mf">

    <html lang="fr">
    <head>
    <meta charset="utf-8"/>
    <style>

    table {
    background:white;
    border-collapse:collapse;
    width:100%;
    }
    th {
    color:black;
    }
    th, td {
    text-align:center;
    padding:5px;
    //border-right:1px solid black;
    }
    th:last-child, td:last-child {
    border-right:0;
    }
    tbody tr:nth-child(odd) {
    background:white;
    }
    tbody tr:nth-child(even) {
    background:white;
    }
    @media screen and (max-width:800px) {
    table {
    display:flex;
    }
    thead {
    width:20%;
    min-width:90px;
    }
    tbody {
    flex:1;
    }
    tr {
    display:flex;
    flex-direction:column;
    }
    th, td {
    text-align:left;
    border-right:0;
    border-bottom:1px solid black;
    }
    tr:last-child td:last-child {
    border-bottom:0;
    }


    }
    @media screen and (max-width:461px) {
    tbody tr:not(:first-child) td::before {
    margin-left:-95px;
    }
    }
    </style>
    </head>

    <body>


    <table summary="Tableau" cellpadding="0" cellspacing="0">
    <caption style="text-align: center;">
    <span style="color: #ff6600; font-size: 16pt;">Faites glisser la comp&eacute;tence vers l'image associ&eacute;e</span>
    </caption>
    <tr>

    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Diplomatie </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Empathie </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Charisme </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Leadership </th>
    </tr>


    <tr>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Bienveillance </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Réactivité </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Prise de d&eacute;cision </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Emotivit&eacute; </th>
    </tr>
    <tr>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Multi-t&acirc;che </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Fiablilité </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Patience </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Adaptation </th>
    </tr>
    <tr>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Rigueur </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Curiosité </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Persévérence </th>
    <th id="p1" ondragstart="dragstart_handler(event)" draggable="true">Intuition </th>
    </tr>

    </table>


    <table>
    <tr>
    <th id="targetF" ondragover="dragover_handler(event)" ondrop="drop_handler(event)"><img src="images/TEST/femme.jpg" width="250" height="350" alt="femme" style="float: right;" /></th>
    <th id="targetB" ><img src="images/LogoCE06.JPG" width="250" height="350" alt="" style="float: right;" /></th>
    <th id="targetH" ondragover="dragover_handler(event)" ondrop="drop_handler(event)" ><img src="images/TEST/homme.jpg" width="250" height="350" alt="" style="float: right;" /></div>
    </tr>
    </table>

    <br>
    <div id="Cpt" style="text-align: center; color: #ff6600; font-size: 20pt;"> </div>
    <br><br><br><br><br>

    </body>
    </html>




    bonne journée

    Laisser un commentaire:


  • pmleconte
    a répondu
    Bonjour,

    Quelle extension utilisez-vous pour que cela fonctionne sur PC ?

    MobileKit est un plugin (date de 2014) juste pour détecter si vous êtes sur mobile ou non, il modifie pas le comportement de votre site.

    J'ai trouvé plusieurs discussions sur le sujet drag&drop mobile (qui date aussi un peu) : https://stackoverflow.com/questions/...rop-for-mobile , https://stackoverflow.com/questions/...mobile-devices la réponse standard est "Most mobile devices do not listen to the drag events"..." I would recommend using the touchmove event..."

    Il existe plusieurs librairies qui sont compatibles PC/Mobile : https://github.com/SortableJS/Sortable semble correspondre à votre demande. Il faut juste en faire un plugin.

    Pascal

    Laisser un commentaire:


  • Comment faire un drag and drop avec joomla sur un Mobile

    Bonjour
    J'ai réalisé une page joomla pour une expo qui aura lieu en janvier, le but est un petit jeu de glisser déposer avec un buzz pour la réponse.
    Cela fonctionne très bien sur un PC Mais sur un mobile le drag et drop ne fonctionne pas ?
    Je ne sais pas ou chercher ? (J'ai installé une extension MobileKIt pour joomla mais cela ne change rien)
    Voila la page : http://www.yc06.fr/j3.3.6/index.php?option=com_content&view=article&id=32&It emid=204&jmk_redirect=1
    La page sera accessible avec un QRCode dans l'expo donc forcement avec des Mobiles
    Merci de votre aide
    bonne journée


Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X