Cordova JQuery 点击/点击问题
Cordova JQuery Tap / Click Issues
我无法让 tap/click 功能在我的 Cordova 应用程序上正常工作。我正在尝试解决快速双击按钮会挂断应用程序的问题。当我使用 "click" 它解决了这个问题,但我 运行 变成了一个次要问题,即从 pagecreate 一直到 pageshow 事件重新创建页面。当我使用 "tap" 时,页面不会像单击那样从头开始重新创建,但如果我快速双击按钮,它会锁定页面。我正在使用 Cordova 6.1.0、Jquery 2.1.4 和 JQueryMobile 1.4.5。我还使用 fastclick 插件来消除 300 毫秒的点击延迟。希望有人能帮助我。
$(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
});
});
我设法用以下代码解决了上述所有问题。我在 "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
});
});
我无法让 tap/click 功能在我的 Cordova 应用程序上正常工作。我正在尝试解决快速双击按钮会挂断应用程序的问题。当我使用 "click" 它解决了这个问题,但我 运行 变成了一个次要问题,即从 pagecreate 一直到 pageshow 事件重新创建页面。当我使用 "tap" 时,页面不会像单击那样从头开始重新创建,但如果我快速双击按钮,它会锁定页面。我正在使用 Cordova 6.1.0、Jquery 2.1.4 和 JQueryMobile 1.4.5。我还使用 fastclick 插件来消除 300 毫秒的点击延迟。希望有人能帮助我。
$(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
});
});
我设法用以下代码解决了上述所有问题。我在 "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
});
});