Usando il tipo mime personalizzato per eventi drag'n'drop o dilma attributi dati

0

Sto facendo un dilema su un'applicazione html / js Sono stato richiesto per gestire gli eventi drag'n'drop per visualizzare un'immagine rilasciata in div se non proviene da immagini che sono già visualizzate nella mia app quindi caricali pure.

Il mio problema è come saprò se si tratta di un'immagine in-app o no?

Un codice di esempio che descrive il problema è:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Drag'n'Drop demo</title>

        <style>
            #dropArea{
                min-width:50%;
                min-height:800px;
                background-color:#FF00BB;
                float: left;
            }

            #imgArea {
                min-width:49%;
                min-height:800px;
                background-color:#0F0FBB;
                float: right;
            }

            #imgArea img {
                display:block;
                margin:5px;
            }

        </style>
         <script src="https://code.jquery.com/jquery-3.2.1.min.js"integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
         crossorigin="anonymous"></script>
        <script>
          var onDropCallback=function(event){
            event.preventDefault();
            var data = event.dataTransfer.getData("text/html");

            if(data){
               console.log("External Image Droped: ",  data); 
            } else {
                data = event.dataTransfer.getData("application/sample");
                console.log("In app droped: ", data);
            }

          }

          var dragSrart=function(event){
            // alert("DragStarted")
            console.log("Drag Started");
            var data = event.dataTransfer.getData("text/html");
            event.dataTransfer.clearData();
            event.dataTransfer.setData('application/sample',data);
          }

          var ondragoverCallback=function(event){
            event.preventDefault();
            var elem=event.target || event.srcElement;
            $(elem).css('border',"1px solid black");
          }

          var dragEndCallback=function(event){
            event.preventDefault();
            console.log("Drag End HAppened");
            $("#dropArea").css('border',"none");
          }

        </script>
    </head>
    <body>
        <div id="dropArea" ondragover="ondragoverCallback(event)" ondrop="onDropCallback(event)" ></div>
        <div id="imgArea">
            <img draggable="true" ondragstart="dragSrart(event)" ondragend="dragEndCallback(event)" src="https://kazasou.files.wordpress.com/2010/08/g288.gif"></div></body></html>

Quantosopraperilproblemaècheiousountipomimepersonalizzato.Maèunabuonaideaintendoqualiproblemipotrebberocausarequestoapproccio?

Inoltre,hopensatoadunapproccioalternativoall'utilizzodegliattributidi%char_de%dihtml5sulleimmagini,adesempiodata-:

<img draggable="true" ondragstart="dragSrart(event)" ondragend="dragEndCallback(event)" src="https://kazasou.files.wordpress.com/2010/08/g288.gif" data-app>

Quindi su drop posso controllare l'html se ha l'attributo data-app corretto. Ma sono delema qual è il migliore. Posso avere qualche aiuto?

    
posta Dimitrios Desyllas 20.09.2017 - 16:09
fonte

1 risposta

-1

My problem is how I will know if is an in-app image or not?

Il confronto delle immagini può essere effettuato utilizzando la tela HTML5 per confrontare i pixel. Per esempio :

 function compareImages(img1, img2, pixelCount) {
   for (var i = 0; i < pixelCount; ++i) {
      if (img1.data[i] !== img2.data[i]) {
           return false;
        }
   }
   return true;
}

Riferimenti

risposta data 17.08.2018 - 21:10
fonte

Leggi altre domande sui tag