TouchSwipe在Android设备上的pageX和PageY为0的问题

最近在使用Cordova + JQM做项目,其中用到了JQuery的插件TouchSwipe,结果发现通过改插件实现拖动时,在Android设备上有不能拖动,经过调试,发现是由于在Android设备上,swipe事件的pageX, pageY的值没有更新,我通过修改改插件,解决了这个问题。
[为啥不用JQuery UI实现拖动呢?由于,我需要的不仅仅是拖动,还需要其他的滑动事件,单击事件,所以就选择了TouchSwipe这个组件]
核心原因我没有去查找,我觉得与jQuery是事件机制有关系,目前我通过修改代码实现:

/**
		* Trigger the relevant event handler
		* The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, "left", "right", "up", or "down"
		* @param {object} event the original event object
		* @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}
		* @param {string} gesture the gesture to trigger a handler for : PINCH or SWIPE {@link $.fn.swipe.gestures}
		* @return Boolean False, to indicate that the event should stop propagation, or void.
		* @inner
		*/
		function triggerHandlerForGesture(event, phase, gesture) {	
			
			var ret;
			
			//SWIPES....
			if(gesture==SWIPE) {
				//Trigger status every time..
				
				//Trigger the event...
				$element.trigger('swipeStatus', [phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData]);
				
				//Fire the callback
				if (options.swipeStatus) {
					if (event.pageX <= 0 || event.pageY <= 0){
						var evt = event.touches ? event.touches[0] : event;
						if (evt != undefined){
							event = evt;
						}
					}
					ret = options.swipeStatus.call($element, event, phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData);
					//If the status cancels, then dont run the subsequent event handlers..
					if(ret===false) return false;
				}
				//...
}

以下几行部分为我添加:

if (event.pageX <= 0 || event.pageY <= 0){
	var evt = event.touches ? event.touches[0] : event;
	if (evt != undefined){
		event = evt;
	}
}


问题在于在Android设备上event.pageX和event.pageY的值没有反应实际的点击位置,而Windows/MacOS和iOS上都表现很好,我测试的华为荣耀4x(一个为负数,一个为0)和小米Pad(pageX,pageY都为0)都存在问题,我发现event的touchs中的事件对象中pageX和pageY反应了实际的点击位置,所以我通过改方法解决了Android上TouchSwipe pageX和PageY属性值错误的问题。我想在后续版本中会更新解决这个问题的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值