touchend Ereignis in ios webkit nicht feuernd?

8

Ich versuche ein Menü für eine ios webkit basierte App zu implementieren, in dem der Benutzer eine Menüschaltfläche berührt / klickt und hält ('.menu_item'), nach 500ms öffnet sich das Untermenü (div.slide_up_sub_menu), und a Der Benutzer sollte in der Lage sein, den Finger / die Maus in ein Untermenü zu bewegen und loszulassen.

%Vor%

Die Anwendung sollte dann in der Lage sein zu erkennen, in welchem ​​Untermenü das Ereignis touchend / mouseup aufgetreten ist. Ich verbinde ein Touchstart-Ereignis mit dem Menüelement, warte 500 ms und gebe anschließend das anzuzeigende Untermenü an. Wenn ein Benutzer seinen Finger loslässt, sollte ein Touchend-Ereignis ausgelöst werden, das das Untermenü schließt. Wenn der Benutzer seine Berührung auf einem Untermenüelement beendet hat, sollte es erkannt werden. Gegenwärtig wird in Safari auf dem Desktop erkannt, in welchem ​​Untermenü ein mouseup-Ereignis aufgetreten ist:

%Vor%

Aber wenn ich dasselbe mit einem Touchend-Handler mache, funktioniert es nicht auf einem iPad:

%Vor%

Wenn ich nach jedem Touchend-Ereignis suche, kann ich einen Verweis auf den übergeordneten Untermenüpunkt erhalten, wenn ich die Berührung auf einem Untermenüpunkt beende:

%Vor%

aber keine Bezugnahme auf den Untermenüpunkt.

Hat jemand eine Idee, warum ein Touchend-Ereignis nicht auf die Untermenüpunkte ausgelöst wird?

Danke

    
Craig 07.10.2011, 18:44
quelle

3 Antworten

16

touchend feuert nicht, weil touchcancel früher gefeuert hat. Wenn Sie eine vollständige Touch-even-Behandlung wünschen, müssen Sie

anrufen %Vor%

im Callback des "touchmove" -Ereignisses, andernfalls, wenn ein Touchmove-Ereignis auftritt, wenn der Browser entscheidet, dass dies ein Scroll-Ereignis ist, wird es einen Touchcancel auslösen und niemals touchend auslösen.

    
Stefan 11.06.2012 07:12
quelle
3

Vielleicht ist es ein bisschen spät zu antworten. Dieses Ereignis wird niemals ausgelöst, da Berührungsereignisse auf genau das Element ausgelöst werden, auf dem der Touchstart stattfand. Um das zu tun, was Sie wollen, ist eine Lösung die Methode document.elementFromPoint, an die Sie die entsprechenden x- und y-Koordinaten senden.

    
user1368691 01.05.2012 21:31
quelle
0

Wenn Sie keine Multitouch-Daten benötigen, können Sie mouseup weiterhin auf dem ipad verwenden.

weiterlesen: Ссылка

    
roee 12.10.2011 11:27
quelle

Tags und Links