uniapp中touchstart、touchmove和touchend在H5中无法触发,可通过jQuery添相应事件代替

uniapp中touchstart、touchmove和touchend在H5中无法触发,可通过jQuery添相应事件代替uniapp中touchstart、touchmove和touchend在H5中无法触发,可通过jQuery添相应事件代替

大家好,又见面了,我是你们的朋友全栈君。

之前开发一个小游戏在手机和ipad上都可以正常使用,后期需要扩展h5业务,发现uni-app中touch事件失效了,使用jquery相关事件代替实现了。

原代码:

<button type="default" class="btn" 
		:style="'transform: translateX('+Distance+'px)'" 
		@touchstart="touchtStarEvent" 
		@touchmove="touchMoveEvent" 
		@touchend="touchEndEvent">
	滑动按钮
</button>
//开始事件
touchtStarEvent(e){
	this.ClientX = e.changedTouches[0]['clientX'];
	this.isMove = false;
},
//移动事件
touchMoveEvent(e){
	let _dir = e.changedTouches[0]['clientX']-this.ClientX;	
	if(_dir<0&&_dir>-50){
		this.isMove = true;
		this.Distance = _dir;
	}
},
//结束事件
touchEndEvent(e){
	if(this.isMove){
		this.Distance = 0;
		this.isMove = false;
	}
},

引用jquery插件

// #ifdef H5
import jQuery from '@/utils/jquery-3.5.1.min.js'
// #endif

jQuery下载地址:点击下载

由于在h5中,touch事件无触发,这里通过jquery的mousedown、mousemove、mouseup、mouseout代替实现touchstart、touchmove、touchend事件。获取鼠标的移动参数后,转成原touch事件所需要的changedTouches数据,这样直接触发原事件即可。

// #ifdef H5
var _isDown = false, 
	that = this;

//开始事件
jQuery(document).on('mousedown', '.btn', function(e){
	if(!_isDown) _isDown = true;
	that.touchtStarEvent({
		changedTouches: [
			{"clientX": e.pageX, "clientY": e.pageY}
		]
	});
});
//移动事件
jQuery(document).on('mousemove', '.btn', function(e){
	if(_isDown){
		that.touchMoveEvent({
			changedTouches: [
				{"clientX": e.pageX, "clientY": e.pageY}
			]
		});
	}
});
//结束事件
jQuery(document).on('mouseup', '.btn', function(e){
	if(_isDown) _isDown = false;
	that.touchEndEvent({
		changedTouches: [
			{"clientX": e.pageX, "clientY": e.pageY}
		]
	});
});
//结束事件
jQuery(document).on('mouseout', '.btn', function(e){
	if(_isDown) _isDown = false;
	that.touchEndEvent({
		changedTouches: [
			{"clientX": e.pageX, "clientY": e.pageY}
		]
	});
});
// #endif

以上是个人项目中移动物体示例,仅供参考。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150809.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 各种烦人图片的整理方法_凡人烦人

    各种烦人图片的整理方法_凡人烦人各种烦人图片资料的整理整合,也帮助自己进行一下梳理,有新的内容页会随时更新,大家看着图片烦恼的也可以看下,希望对和我一样的菜鸟有帮助哈!当然对于高手来说,您的回复是我勃起的动力首先还是要喊下口号———

    2022年8月4日
    5
  • 微信小程序之自定义toast弹窗「建议收藏」

    微信小程序之自定义toast弹窗「建议收藏」微信小程序里面的自带弹窗icon只有两种,success和loading。有时候用户输入错误的时候想加入一个提醒图标,也可以使用wx.showToast中的image来添加图片达到使用自定义图标的目的;但是如果图标是字体,或者提醒的内容有很长捏(小程序中提醒的内容最多只能设置7个字,多了会被隐藏),那就只有自定义toast弹窗了;第一步:新建一个wxml文件用来装模板,方便以后使用,…

    2022年9月2日
    4
  • Idea激活码最新教程2017.3.6版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2017.3.6版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2017 3 6 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2017 3 6 成功激活

    2025年5月24日
    1
  • js数组去重的10种方法

    js数组去重的10种方法Methods1:思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。functionunique(arr){letnewArr=[arr[0]];for(leti=1;i&lt;arr.length;i++){…

    2022年7月12日
    19
  • MySQL多表关联查询

    MySQL多表关联查询SQL连接(JOIN)子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。连接的结果可以在逻辑上看作是由SELECT语句指定的列组成的新表。左连接与右连接的左右指的是以两张表中的哪一张为基准,它们都是外连接。外连接就好像是为非基准表添加了一行全为空值的万能行,用来与基准表中找不到匹配的行进行匹配。假设两个没有空值的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能

    2022年5月5日
    45
  • Scripting.FileSystemObject 文件操作

    Scripting.FileSystemObject 文件操作Scripting.FileSystemObject方法或者属性描述BuildPath() 生成一个文件路径CopyFile()复制文件 CopyFolder() 复制目录CreateFolder()

    2022年7月14日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号