2016-03-30 3 views
0

У меня возникли проблемы с функциональностью tap/click, чтобы нормально работать в приложении Cordova. Я пытаюсь исправить проблему, когда быстрый двойной щелчок на кнопке приведет к зависанию приложения. Когда я использую «щелчок», он исправляет эту проблему, но я сталкиваюсь с вторичной проблемой воссозданной страницы снова с pagecreate вплоть до событий на странице. Когда я использую «tap», страница не воссоздается с нуля, как при нажатии, но если я быстро нажимаю на кнопку, она блокирует страницу. Я использую Cordova 6.1.0, JQuery 2.1.4 и JQueryMobile 1.4.5. Я также использую плагин fastclick для удаления задержек в 300 мс. Надеюсь, кто-то может мне помочь.Cordova JQuery Проблемы с нажатием/щелчком

$(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 
    }); 
}); 

ответ

1

Мне удалось исправить все вышеперечисленные проблемы со следующим кодом. Я добавил функцию debounce в «ondeviceready» и добавил код предотвращенияDefault внутри события нажатия кнопки.

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 
    }); 
});