Comment faire un drag and drop avec joomla sur un Mobile

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

  • 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



  • #2
    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
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      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

      Commentaire


      • #4
        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
        If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Bonjour
          Merci pour votre aide
          Mais Hélas cela ne change Rien

          bonne journée


          Commentaire


          • #6
            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

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X