我连接了一个简单的长触摸功能,在 500 毫秒后使用“打开”API 命令打开上下文菜单。菜单打开。然而,在“touchend”菜单消失。只有当我在“touchend”之前触摸上下文菜单时它才会保留。有没有办法防止这种行为?从源代码来看,只有 dom 不同部分的“touchstart”才会触发关闭事件。
代码如下,以防万一。并不是说我的上下文菜单需要 tr 的代表——在下面解释 targetTr 变量的使用。
var mobDevice_onLongTouch,
mobDevice_touchTimer,
mobDevice_longPressDuration = 500; //length of time we want the user to touch before we do something
//handle long press on the datatable
var touchArea = document.querySelector("#table");
touchArea.addEventListener("touchstart", touchAreaTouchStart, false);
touchArea.addEventListener("touchend", touchAreaTouchEnd, false);
function touchAreaTouchStart(e) {
var targetTr = $(e.target).closest('tr');
mobDevice_touchTimer = setTimeout(function () { touchArea_onLongTouch(targetTr) }, mobDevice_longPressDuration)
};
function touchAreaTouchEnd(e) {
if (mobDevice_touchTimer) {
clearTimeout(mobDevice_touchTimer) //reset the clock
}
};
function touchArea_onLongTouch(target) {
$('#table').contextmenu('open', target);
};