Javascript 如何取消Mobile Safari上的触摸操作?
假设我有一个带有Javascript 如何取消Mobile Safari上的触摸操作?,javascript,iphone,mobile-safari,Javascript,Iphone,Mobile Safari,假设我有一个带有touchEnd事件侦听器的按钮。如果我触摸按钮,将手指滑出按钮,然后释放触摸,我想“取消”触摸事件 如果我使用onClick执行以下操作,则其行为正确: buttonElement.addEventListener('click', function (event) { if (event.target === this) { // Do something } }); 但是,这不适用于“touchEnd”,因为event.target指向原始元素(b
touchEnd
事件侦听器的按钮。如果我触摸按钮,将手指滑出按钮,然后释放触摸,我想“取消”触摸事件
如果我使用onClick
执行以下操作,则其行为正确:
buttonElement.addEventListener('click', function (event) {
if (event.target === this) {
// Do something
}
});
但是,这不适用于“touchEnd”,因为event.target
指向原始元素(buttonElement
),而不是指向我释放touch的元素
除了在“touchMove”上设置标志这样的操作外,还有更好的通用方法吗?谢谢 使用触摸事件:touchstart、touchmove、touchcancel、touchend。看
不管怎样,我不认为我会试图取消这次活动。在事件中,我会检查“光标”(手指)的位置,如果它在该区域之外,就不要启动该功能。使用触摸事件:touchstart、touchmove、touchcancel、touchend。看
不管怎样,我不认为我会试图取消这次活动。在这个事件中,我会检查“光标”(手指)的位置,如果它在该区域之外,就不要启动该功能。我知道这个问题很老,但我正在搜索如何做同样的事情,我编写了一个代码,可以工作,如果以后有人需要的话 我只是在触摸移动时取消默认操作。在我的WebApp上运行得很好,反馈比处理mouseup和mousedown事件要好得多,在mobilesafari上运行太慢了
var moved=false;
function touchstart(){
moved=false;
//highlight button for feedback
}
function touchmove(){
moved=true;
}
function touchend(){
//undo-highlight the button
if(moved) touchcanceled();
else action();
}
function touchcanceled(){
//user just flicked the button,
//probably scrolling the view
}
function action(){
alert("You triggered me!");
}
*将这些函数添加到各自的事件侦听器中我知道这个问题很老了,但我正在搜索如何做同样的事情,我编写了一个有效的代码,如果以后有人需要的话 我只是在触摸移动时取消默认操作。在我的WebApp上运行得很好,反馈比处理mouseup和mousedown事件要好得多,在mobilesafari上运行太慢了
var moved=false;
function touchstart(){
moved=false;
//highlight button for feedback
}
function touchmove(){
moved=true;
}
function touchend(){
//undo-highlight the button
if(moved) touchcanceled();
else action();
}
function touchcanceled(){
//user just flicked the button,
//probably scrolling the view
}
function action(){
alert("You triggered me!");
}
*很久以前,将这些函数添加到各自的事件侦听器中,但我只想添加我的2c值,因为这个问题还没有公认的答案 touchCancel目前在移动平台上不太可靠 见: 或者,您也可以编写自己的事件覆盖,就像在中所做的那样
这样你就可以在取消之前确定手势的类型。很久以前,我只是想增加我的2c值,因为这个问题还没有公认的答案 touchCancel目前在移动平台上不太可靠 见: 或者,您也可以编写自己的事件覆盖,就像在中所做的那样
这样,您可以在取消之前确定手势的类型。这是正确的方法。只有当用户收到呼叫或推送通知时才会调用touchcancel。是的,我知道touchcancel是如何触发的,因此引号中有“cancel”。因此,基本上没有办法跟踪事件侦听器之外的某些状态?这是正确的方法。只有当用户收到呼叫或推送通知时才会调用touchcancel。是的,我知道touchcancel是如何触发的,因此引号中有“cancel”。所以基本上没有办法跟踪事件监听器之外的状态?