2016-03-30 18 views
0

Ich habe Probleme, die Tap/Klick-Funktion zu erhalten, damit sie in meiner Cordova-App ordnungsgemäß funktioniert. Ich versuche, ein Problem zu beheben, bei dem ein schneller Doppelklick auf eine Schaltfläche die App aufhängt. Wenn ich "klicke" benutze, behebt es dieses Problem, aber ich stoße auf ein sekundäres Problem der Seite, die von pagecreate bis pageshow events neu erstellt wird. Wenn ich "tap" benutze, wird die Seite nicht wie bei einem Klick neu erstellt, aber wenn ich zweimal kurz auf die Schaltfläche tippe, wird die Seite gesperrt. Ich verwende Cordova 6.1.0, Jquery 2.1.4 und JQueryMobile 1.4.5. Ich benutze auch das FastClick-Plugin, um die 300 ms Verzögerung in Klicks zu entfernen. Hoffentlich kann mir jemand helfen.Cordova JQuery Tippen/Klicken auf Probleme

$(document).on("pagebeforeshow", "#index", function() { 
    $page = $("#index"); 
    $button = $("#buttonId", $page); 

    // Tap method 
    $button.off("tap").on("tap", function() { 
     // do something 
    }); 

    // Click method 
    $button.off("click").on("click", function() { 
     // do something 
    }); 
}); 

Antwort

1

Ich habe es geschafft, alle oben genannten Probleme mit dem folgenden Code zu beheben. Ich fügte eine Debounce-Funktion in "ondeviceready" hinzu und fügte den preventDefault-Code innerhalb des Button-Click-Ereignisses hinzu.

function onDeviceReady() { 
// Debounce double clicks 
var last_click_time = new Date().getTime(); 
document.addEventListener('click', function (e) { 
    var click_time = e['timeStamp']; 
    if (click_time && (click_time - last_click_time) < 1000) { 
     e.stopImmediatePropagation(); 
     e.preventDefault(); 
     return false; 
    } 
    last_click_time = click_time; 
}, true); 
} 

$(document).on("pagebeforeshow", "#index", function() { 
    $page = $("#index"); 
    $button = $("#buttonId", $page); 

    $button.off("click").on("click", function(e) { 
     e.preventDefault(); 
     // do something 
    }); 
});