Im Ablauf meiner Anwendung füge ich, nachdem ich dynamisch ein Div erstellt habe, ein Touchstart-Ereignis hinzu, das eine Funktion aufruft, in der ich je nach Anzahl gleichzeitiger Berührungen verschiedene Aufgaben verwalten möchte: Um dies zu tun, habe ich mir das überlegt Verwenden Sie die Eigenschaft touchEvent.changedTouches.length
(https://developer.mozilla.org/en-US/doc ... gedTouches).
Ich habe etwas so:
Code: Select all
$("body").append("Some text...");
touchEvents();
...
function touchEvents() {
var touches;
$("#myDiv").on("touchstart", function (e) {
touches = e.changedTouches;
alert(touches.length);
switch (touches.length) {
case 1:
{code_block_1}
break;
case 2:
{code_block_2}
break;
default:
{code_block_default}
}
});
}
...
Aber wenn ich ein Android-Gerät verwende (Ich habe es mit einem Samsung- und einem NGM-Handy getestet – entweder älteren und neuesten Android-Handys – entweder mit aktualisiertem Firefox und Chrome) Ich erhalte immer „1“ durch den Alert(), der direkt nach dem Touchstart aufgerufen wird Ereignis, auch wenn ich mehr als einen Finger benutze; Folglich verläuft die Route immer innerhalb des Schalters case: 1 option.
Ich habe herausgefunden, dass dies an einem seltsamen Verhalten der touchEvent.touches-Liste zu liegen scheint .
Tatsächlich, wenn ich den folgenden Code habe
Code: Select all
$("body").append("Some text...");
touchEvents();
...
function touchEvents() {
var touches;
$("#myDiv").on("touchstart", function (e) {
touches = e.touches;
alert(touches.length);
...
});
}
(Wenn sich die Finger nacheinander nach unten bewegen, erhalte ich auch eine erste Warnung, die korrekterweise „1“ sagt)...
Der erste (der zweite, falls die Berührung mit zwei Fingern nicht gleichzeitig erfolgt) fordert „2“ auf, aber unmittelbar danach Wenn diese Warnung geschlossen wird, wird eine weitere mit der Eingabeaufforderung „1“ ausgelöst.
Zur Kontrolle habe ich auch versucht, den Beispielcode, der hier zu finden ist, zu kopieren und einzufügen :
https://developer.mozilla.org/en-US/doc ... nt/touches
Hinzufügen von drei Funktionen, die das alarmieren e.touches.length d.h.
Code: Select all
$(document).ready(function() {
document.getElementById("test").addEventListener('touchstart', function(e) {
// Invoke the appropriate handler depending on the
// number of touch points.
switch (e.touches.length) {
case 1: handle_one_touch(e); break;
case 2: handle_two_touches(e); break;
case 3: handle_three_touches(e); break;
default: console.log("Not supported"); break;
}
}, false);
function handle_one_touch(e) {
touches = e.touches;
alert(touches.length);
}
function handle_two_touch(e) {
touches = e.touches;
alert(touches.length);
}
function handle_three_touch(e) {
touches = e.touches;
alert(touches.length);
}
});
Aus diesem Grund ist die Eigenschaft „changedTouches.length“ meiner Meinung nach immer „1“.
Weiß jemand, ob es ein bekanntes Problem zu diesem Problem auf Android-Geräten gibt und/oder wie man es lösen kann?
Vielen Dank im Voraus, Federico