问题:触摸时并不总是感觉到鼠标移动。
我目前正在使用jQuery UI拖动和jQuery Touch Punch将触摸事件转换为鼠标事件。在桌面浏览器上一切正常。
我可以让它执行可拖动的'start'函数,但它并不总是启动可拖动的'drag'函数。我有听众设置到处查看发生了什么,并且在启动功能运行后它没有显示任何鼠标移动 - 在窗口和父文档中。滚动,然后打开(通常由preventDefault();)阻止。我必须将手指移开并将其放回以继续拖动。但是,如果我放置某些e.preventDefault()s,我可以在启动可拖动的第三或第四次时使拖动操作正常(换句话说,从初始滑动开始)。
以下是精简版:
$(window).mousedown(function(e){
drag(e);
});
function drag(e){
$iframefix.show();
$draggable.draggable({
start: function(e, ui){
// this function runs well, but at the end of it, I don't seem to register
// any mouse movements in the document or window as I move my finger
// around, and even using .trigger('mousemove') does not register an event.
},
drag: function(e, ui){
}
});
$draggable.trigger(e);
}
我的猜测是,它与鼠标事件起源于iframe这一事实有关,当使用.trigger()时,也许jQuery规范化事件,使其返回窗口(e.originalEvent) 。也许这让人感到困惑的是jQuery触摸打击感应鼠标移动(也许它认为这是一次点击)。
这是jQuery Touch Punch - 它是一个包含jQuery鼠标事件的小脚本:
https://raw.github.com/furf/jquery-ui-touch-punch/master/jquery.ui.touch-punch.js
或者,也许这是使用e.preventDefault()或e.stopPropagation或在我不看的区域中返回false。
无论如何,有些事情阻止它在感知拉杆后感觉我的手指移动。