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年6月19日 下午2:36
下一篇 2022年6月19日 下午2:36


相关推荐

  • validationEngine参数详解

    validationEngine参数详解validationEngine·jQueryv1.4.4+注意事项:1.演示版本为v2.2.4;2.v2.0以下的版本参数并不完全通用;对 validationEngine.jquery.css 文件进行修改,修改如下:1.提示内容字体改为宋体;2.去除中各浏览器的私有属性(各浏览器已经支持圆角和阴影,不再需要加私有属性)。…

    2022年10月4日
    5
  • [大整数乘法] java代码实现

    [大整数乘法] java代码实现

    2021年8月26日
    57
  • SVN和Git的使用

    SVN和Git的使用SVN 是集中式的管理 如服务器上有一个文件夹 里面有很多的文件 即源代码 每个人写完后都往服务器中提交 一个新的项目成员从服务器中去下载该版本 这就是 SVN 所谓的集中式管理 GIT 是分布式的管理 它与 Maven 的概念很像 它有一个中央仓库来保存代码 本地有本地 git 仓库 代码在中央仓库中存一份 本地的仓库中也存一份 GIT 的优点 当服务器坏了 出现了代码的丢失时 不用担心 因为本地还有一份 GIT 的使用步骤 1 代码写完后要先提交到本地仓库 2 把本地仓库中的代码推送到中央仓库

    2026年3月17日
    1
  • 免费CDN加速隐藏你的服务器原ip以防别人攻击

    免费CDN加速隐藏你的服务器原ip以防别人攻击交流 点击跳转青龙安装教程 kingfeng 安装教程其他教程看完主页这里以 kingfeng 端口为例 1 注册七牛的免费 cdn 官方链接注册好 gt 登录控制台 gt 然后点添加域名看图片 2 添加域名配置并配置 源 ip 填你的服务器 ip 端口 填你的开放 kingfeng 端口 3 上面都配置完 去你的域名服务商解析 CNAME 记录主机值 你刚才在 cdn 添加二级域名前缀是什么你就填什么解析类型 CNAME 记录值 你在

    2026年3月16日
    2
  • Jenkins(2)docker容器中安装python3[通俗易懂]

    Jenkins(2)docker容器中安装python3[通俗易懂]前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

    2022年7月28日
    9
  • Quartz中时间表达式的设置—–corn表达式

    Quartz中时间表达式的设置—–corn表达式

    2021年12月9日
    126

发表回复

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

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