{"id":236,"date":"2011-07-05T23:27:09","date_gmt":"2011-07-05T21:27:09","guid":{"rendered":"https:\/\/sgaul.de\/?p=236"},"modified":"2014-03-13T21:34:55","modified_gmt":"2014-03-13T20:34:55","slug":"java-script-drag-and-drop-auf-geraten-mit-touch-display","status":"publish","type":"post","link":"https:\/\/sgaul.de\/2011\/07\/05\/java-script-drag-and-drop-auf-geraten-mit-touch-display\/","title":{"rendered":"Java-Script-Drag-and-Drop auf Ger\u00e4ten mit Touchscreen"},"content":{"rendered":"

Manchmal ist man eben doch zu voreilig: F\u00fcr ein Uniprojekt planten und versprachen wir schnell und ohne weitere Recherche eine Web-Applikation<\/a>, die mittels \u201eDrag-and-Drop<\/strong>\u201c gesteuert werden kann. An sich keine gro\u00dfe Herausforderung: Mit Frameworks wie J-Query UI<\/strong> ist der wesentliche Teil der Arbeit schon erledigt, bevor man anf\u00e4ngt. Dass das alles nebenbei auf einem Tablet-PC mit Ber\u00fchrungsbildschirm laufen soll haben wir dabei nicht als Problem gesehen. Aber leider funktioniert J-Query UIs Drag-and-Drop nicht auf<\/strong> Touch-Displays<\/strong> \u2013 genau wie alle vergleichbaren Frameworks auch. Zeit sich nach einer Alternativl\u00f6sung<\/strong> umzusehen…<\/p>\n

Das Problem<\/h2>\n

Das Problem ist schnell erkl\u00e4rt: Bisherige Ans\u00e4tze basieren im Wesentlichen auf Maus-Ereignissen<\/strong>, welche Java-Script-Engines bereitstellen. Ein Ziehen beginnt, wenn \u00fcber einem Objekt die Maustaste gedr\u00fcckt (und nicht gleich losgelassen) wird, dem Onmousedown<\/strong>-Event. Das Loslassen ist ebenfalls an das Loslassen der Maustaste gekoppelt, onmouseout<\/strong> genannt. Auch die Bewegung selbst ist mit der Maus und onmousemove<\/strong> verbunden.<\/p>\n

Da es auf Ber\u00fchrungsbildschirmen keine Maus<\/strong> gibt, werden konsequenterweise auch keine derartigen Events erzeugt. Stattdessen gibt es ber\u00fchrungsbezogene \u00c4quivalente zur Maus: ontouchstart<\/strong>, ontouchmove<\/strong> und ontouchend<\/strong>.<\/p>\n

Eine fast schon unwichtige Namens\u00e4nderung, die Konsequenzen sind aber entsprechend gro\u00df: Bisherige Java-Script-Codes funktionieren auf dem Touchscreen nicht.<\/p>\n

L\u00f6sungsm\u00f6glichkeiten<\/h2>\n

Die genannte Umstellung klingt unkompliziert, dennoch gibt es weder von J-Query UI noch J-Query Mobile eine L\u00f6sung<\/strong>. Dennoch gibt es vielversprechende Ans\u00e4tze:<\/p>\n