2016-03-30 9 views
0

私のCordovaアプリケーションで正常に動作するようにタップ/クリック機能を取得できません。私は、ボタンを素早くダブルタップするとアプリがハングアップする問題を解決しようとしています。 「クリック」を使用するとこの問題は解決されますが、ページショウのすべての方法でpagecreateからページを再作成するという二次的な問題が発生します。 「タップ」を使用すると、ページはクリックのように最初から再作成されませんが、ボタンをダブルタップするとページがロックされます。私は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

上記のすべての問題を次のコードで修正することができました。私は "ondeviceready"にデバウンス機能を追加し、ボタンクリックイベント内にpreventDefaultコードを追加しました。

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