Ein neues Event "onhold" erstellen

gianfranco0104

Erfahrenes Mitglied
Frage, gibt es eine Möglichkeit ein neues onClick zu basteln, z.B. onHold? Erstmal das Detail.:
ich habe folgenden Script für Touchevents erstellt, welcher die Library von "Kendo" benutzt:

Javascript:
 window.myTouch = {
        touchstart: function(e) { // alert("touch start");
                    },
        swipe:         function(e) { // alert("swipe " + e.direction);
                    },
        tap:         function(e) { // alert("tap");
                    },
        doubletap:     function(e) { // alert("double tap");
                    },
        hold:         function(e) { TabHold = true;
                                  MM_DW_effectSlide($('#charmbar_dwn_expl'),'show','slide','down',239,330);      
                    }
}

Beim Finger Halten auf dem Display wird die Funktion unter "hold" gestartet. Dies wird NUR in der DIV angewendet, in der das Ganze wie folgt deklariert ist:
HTML:
<div id="derDIVname"
            data-role="touch"
            data-enable-swipe="1"
            data-touchstart="myTouch.touchstart"
            data-swipe="myTouch.swipe"
            data-tap="myTouch.tap"
            data-doubletap="myTouch.doubletap"
            data-hold="myTouch.hold">
        </div>

Klappt prima.
Meine Frage, gibt es eine Möglichkeit das Ganze auch so wie ein onClick zu handeln... nenne es einfach mal onHold:
also z.B. <tr onClick="öffnen des inhalts" onHold="sidebar öffnet mit eigenschaften">Inhalt der zeile </tr>
 
Hier benötige ich aber wirklich onClick und halten...due touch events funktionieren gut bei Smartphones und Tabletts, das ist korrekt, allerdings schlecht für Windows. Dieses Webbasierte Tool wird nur offline laufen und auf einem multotouch Industrie Bildschirm. also nicht korrekt swipen, scrollen usw, so wie auf iOs oder Android Geräten.
Das Kendo ermöglicht es aber und es klappt wirklich perfekt. Nun ist nur die Frage, ob ich den Event-Handler um das eigene, welche ich oben beschrieben hatte erweitern kann? Wie gesagt, ich benötige wirklich beide Handler.

Beispiel: Tabellenzeile enthält Foldername oder Dateiname (mit Icon, Größe und Änderungsdatum). Bei OnClick wird der Ordner Inhalt aufgelistet oder Datei geöffnet.. Bei Hold muss der Ordnername oder der Dateiname zwischen gespeichert werden, dann öffnet sich eine Sidebar und hier kann ich nun löschen, verschieben umbenennen usw. Also eine Art Filemanager. Läuft alles nur offline und local. Klappt auch alles, nur das Hold muss eben irgendwie ein onHold oder sowas werden...
 
Zuletzt bearbeitet:
Bin mir jetzt nicht sicher, ob ich deine Frage nach dem zusätzlichen Eventhandler richtig verstehe, aber grundsätzlich würde es bei den beiden Fallunterscheidungen, je nachdem was zum Einsatz kommen soll, so lauten:
  • "Touch"-Event
HTML:
<tr onclick="öffnen des inhalts" ontouchstart="sidebar öffnet mit eigenschaften">Inhalt der zeile </tr>
  • "Mouse"-Event
HTML:
<tr onclick="öffnen des inhalts" onmousedown="sidebar öffnet mit eigenschaften">Inhalt der zeile </tr>
 
onmousedown schaltert vor dem onclick, hebelt ihn also aus.
ist das onouchstart aus den vorhandenen eventhandlern, die du vorher gemeint hast (für Tablett und Smartphone)? das kann ich nicht nutzen, ich müsste aus dem KENDO den HOLD verwenden. also es MUSS das aus der Kendo-Library sein...
 
korrekt, aber ich nutze es in einem Javascript und geht es komischerweise nicht. deshalb dachte ich, es würde ggf. mit einem neuen Event-Handler klappen.
hier der Ausschnitt des Javascripts:
Javascript:
result +=
                        '<TR  data-role="touch"  data-enable-swipe="1" data-hold="myTouch.hold" onClick="subFolder( \'' + escape( FolderPaths ) + '\' ); return false;"' + ( ( toggle ) ? '' : '' ) + '>' +
                        '<TD NOWRAP> <div id="folder">' + '<span  CLASS="contentname">' + FolderName  + '</span>' + '</div>  </TD>' +
                        '<TD NOWRAP><span CLASS="exptitles" > ' + folderDate + ' </span></TD>' +
                            '<TD NOWRAP  align="right"><span CLASS="exptitles" align="right"> ' +
                            toMetric( folder.size ) + '&nbsp; </span></TD></TR>';

...Weiss nicht ob dir das so reicht um durchzublicken. letztendlich wird hier in RESULT das Ergebnis der gefundenen Dateien in einer Tabelle aufgelistet . Je mehr Dateien oder Ordner desto größere die Tabelle. Via onClick auf die Zeile wird der Ordner oder die Datei gelesen und dann geöffnet , bzw. in den Ordner gesprungen und dessen Inhalt neu aufgelistet. Mit langen Tab muss eben die Sidebar geöffnet werden, ich habe hier nun mal die "data-role" eingesetzt, läuft aber nicht.

Das "window.myTouch = {..." befindet sich außerhalb der Funktion mit dem RESULT, deshalb geht es eventuell auch nicht, oder? wie kann ich das global machen?
 
Lösung im Result (habe die Variable zum Verständnis in einen Alert gepackt, eigentl. wird hier die zu erl. Funktion aufgerufen und die Variable übergeben, welche den Pfad aus der Tabellenzeile mitnimmt.

Javascript:
result +=
                '<TR onMouseUp="if (TabHold === true) {var clkFolder=( \'' + escape( FolderPaths ) + '\' ); alert(clkFolder);} else {subFolder( \'' + escape( FolderPaths ) + '\' ) ;return false;}">' +
                '<TD NOWRAP> <div class="folder">' + '<span  CLASS="contentname">' + FolderName  + '</span>' + '</div>  </TD>' +
                '<TD NOWRAP><span CLASS="exptitles" > ' + folderDate + ' </span></TD>' +
                    '<TD NOWRAP  align="right"><span CLASS="exptitles" align="right"> ' +
                    toMetric( folder.size ) + '&nbsp; </span></TD></TR>'

Das jQuery welches den HOLD Befehl (nur mit KENDO Plugin) startet und mir dann auch TabHold auf true setzt:

Javascript:
 //Touch-Evets im Explorer erkennen und Funktion ausführen

$(document).ready(function(){
    $("#explorerContents").kendoTouch(
        { hold:
              function (e) {
                  TabHold = true;
                  MM_DW_effectSlide($('#editbar),'show','slide','down',239,330);
              }
         });
});

Danach wird die Editbar eingeblendet, und aus dem Result die Zeile ausgelesen (und gemerkt), welche meine Datei, die ich nun editieren will bereit macht. In der Editbar sind dann eben die Funktionen, löschen, umbenennen, verschieben usw....

Danke an alle, die mich auf die Idee gebracht haben.
Ein schönes Wochenende
 

Neue Beiträge

Zurück