广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何理解移动web开发过程中的点透问题
  • 896
分享到

如何理解移动web开发过程中的点透问题

2024-04-02 19:04:59 896人浏览 泡泡鱼
摘要

本篇文章为大家展示了如何理解移动web开发过程中的点透问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先说说故事发生的场景,举个栗子如下图:A是遮罩层,B是正常的

本篇文章为大家展示了如何理解移动web开发过程中的点透问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

先说说故事发生的场景,举个栗子如下图:

如何理解移动web开发过程中的点透问题

A是遮罩层,B是正常的DOM,C是B上的某个元素,这里是链接。场景是点击A的时候A消失,结果点到了C,页面发生了跳转,这显然不是咱想要的~

下面我们来监测点击事件:

var div1 = document.getElementById("div1"); var div2 = document.getElementById('div2'); var con = document.getElementById('console'); function handle(e){     var tar = e.target, eve = e.type;    var ele = document.createElement("p");    ele.innerhtml = "target:"+ tar.id + " event:" + eve ;    con.appendChild(ele);    if(tar.id === "div1"){         div1.style.display = "none";    } } div1.addEventListener("touchend",handle); div1.addEventListener("touchstart",handle);

只要你不点击C处,一切都很平静,貌似没有问题,事件顺序是这样的:

target:div1 event:touchstart target:div2 event:touchend

但是如果你在C处点击A,你会发现页面跳转了,为了更清楚的看到这个过程,我们为B绑定click事件,即如果B触发了click事件,那么说明,在A上的点击最终点到了B上。在上面javascript清单上添加一行代码如下:

div2.addEventListener('click',handle);

点击B区域,可以看到页面下方的log记录控制台内出现如下内容:

target:div1 event:touchstarttarget:div1 event:touchendtarget:div2 event:click

可见,在div1的事件触发完毕后,div2也就是B区域神奇的捕获到了click事件,而事实上我们只点击了div1。这就是”点透“了,隔山打牛!

点透现象出现的场景:

刚才举例说明了什么是点透,其实点透的出现场景可以总结如下:

  1. A/B两个层上下z轴重叠。

  2. 上层的A点击后消失或移开。(这一点很重要)

  3. B元素本身有默认click事件(如a标签) 或 B绑定了click事件。

在以上情况下,点击A/B重叠的部分,就会出现点透的现象。

为什么会出现”点透“现象

在移动端不使用click而用touch事件代替触摸是因为click事件有着明显的延迟,具体touchstart与click的区别如下:

  1. touchstart:在这个DOM(或冒泡到这个DOM)上手指触摸开始即能立即触发

  2. click:在这个DOM(或冒泡到这个DOM)上手指触摸开始,且手指未曾在屏幕上移动(某些<a  href=”Http://www.it165.net/edu/ewl/” target=”_blank”  class=”keylink”>浏览器</a>允许移动一个非常小的位移值),且在这个在这个dom上手指离开屏幕,且触摸和离开屏 幕之间的间隔时间较短(某些浏览器不检测间隔时间,也会触发click)才能触发

也就是说,事件的触发时间按由早到晚排列为:touchstart 早于 touchend 早于 click。亦即click的触发是有延迟的,这个时间大概在300ms左右。

由于我们在touchstart阶段就已经隐藏了罩层A,当click被触发时候,能够被点击的元素则是其下的B元素,由于B绑定了click事件(或者B本身默认存在click事件),所以B的click事件被触发,产生了点透的情况。

解决方案

对于B元素本身没有默认click事件的情况(无a标签等),应统一使用touch事件,统一代码风格,并且由于click事件在移动端的延迟要大很多,不利于用户体验,所以关于触摸事件应尽量使用touch相关事件。

对于B元素本身存在默认click事件的情况,应及时取消A元素的默认点击事件,从而阻止click事件的产生。即应在上例的handle函数中添加代码如下:

e.preventDefault();

上述内容就是如何理解移动WEB开发过程中的点透问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: 如何理解移动web开发过程中的点透问题

本文链接: https://www.lsjlt.com/news/86171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解移动web开发过程中的点透问题
    本篇文章为大家展示了如何理解移动web开发过程中的点透问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先说说故事发生的场景,举个栗子如下图:A是遮罩层,B是正常的...
    99+
    2022-10-19
  • ios开发中如何解决navigationBar的透明问题
    这篇文章将为大家详细讲解有关ios开发中如何解决navigationBar的透明问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。navigationBar的透明问题如果...
    99+
    2022-10-19
  • JS如何解决移动web开发手机输入框弹出的问题
    这篇文章主要介绍JS如何解决移动web开发手机输入框弹出的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在移动web开发中和pc端不同的是,手机的输入是软键盘,这样就会有个问题,...
    99+
    2022-10-19
  • web开发中如何解决移动端设置了overflow:hidden页面还会滚动的问题
    这篇文章主要为大家展示了“web开发中如何解决移动端设置了overflow:hidden页面还会滚动的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开...
    99+
    2022-10-19
  • 如何理解WEB开发中的苦大难字符集问题
    本篇文章为大家展示了如何理解WEB开发中的苦大难字符集问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。记得刚做javaweb开发的时候被这个编码问题搞得晕头转向,...
    99+
    2022-10-19
  • 移动前端开发和web前端开发的区别该如何理解
    这篇文章给大家介绍移动前端开发和web前端开发的区别该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。既然都是前端开发,两者肯定有紧密的联系,但是楼主主要询问区别,我就先简单聊一下相同点,之后在着重分析不同点。 ...
    99+
    2023-06-05
  • web开发中如何解决浏览器会自动填充密码的问题
    这篇文章主要介绍了web开发中如何解决浏览器会自动填充密码的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。解决办法是在form上或inp...
    99+
    2022-10-19
  • 如何解决thinkphp在app接口开发过程中的安全验证问题
    这篇文章给大家分享的是有关如何解决thinkphp在app接口开发过程中的安全验证问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对于我们写好的接口,如果不经过安全认证就可以直接访问的话,则将对我们网站产生非常...
    99+
    2023-06-22
  • 如何处理PHP开发中的多线程和并发问题
    一、引言随着互联网的迅速发展,Web应用程序的性能和并发处理是一个至关重要的问题。特别是在PHP开发中,由于PHP是一种解释型语言,其自身的单线程特性导致其并发处理能力有限。然而,在某些场景下,我们仍然需要实现多线程和并发处理来提升Web应...
    99+
    2023-10-21
    PHP多线程 并发问题
  • 如何解决小程序开发中遇到的问题
    这篇文章主要介绍了如何解决小程序开发中遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。小程序面试题1. bindtap和catchtap的区别是什么?bind事件绑定...
    99+
    2023-06-14
  • web开发中如何优雅的解决"重复请求"问题
    目录前言提出问题解决思路axios 如何取消请求封装axios准备工作开始封装总结前言 在我们web开发过程中,很多地方需要我们取消重复的请求。但是哪种场合需要我们取消呢?我们如何取...
    99+
    2022-11-13
  • 打包接口和编程算法:Java 开发中的难点问题如何解决?
    在Java开发中,打包接口和编程算法是两个非常重要的方面。然而,它们也是开发过程中的难点问题。本文将探讨如何解决这些难点问题,以帮助Java开发人员更好地应对这些挑战。 一、打包接口的难点问题 打包接口是一项关键任务,因为它将代码组织成库或...
    99+
    2023-10-29
    编程算法 打包 接口
  • 编程开发中如何解决数值排序的问题
    这篇文章主要为大家展示了“编程开发中如何解决数值排序的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“编程开发中如何解决数值排序的问题”这篇文章吧。出题目的: 掌握任意数列之间的排序技巧 解题...
    99+
    2023-06-08
  • C#开发中如何处理线程同步和并发访问问题及解决方法
    C#开发中如何处理线程同步和并发访问问题及解决方法随着计算机系统和处理器的发展,多核处理器的普及使得并行计算和多线程编程变得非常重要。在C#开发中,线程同步和并发访问问题是我们经常面临的挑战。没有正确处理这些问题,可能会导致数据竞争(Dat...
    99+
    2023-10-22
    解决方法 线程同步 并发访问
  • 如何解决PHP开发中的安全权限管理问题
    在PHP开发中,安全权限管理是一个至关重要的问题。当我们在开发网站或应用时,通过权限管理可以控制用户对不同功能或资源的访问权限,保护敏感数据和功能不受未经授权的用户访问。本文将介绍一些常见的安全权限管理问题,并提供具体的代码示例来解决这些问...
    99+
    2023-10-21
    PHP开发 解决问题 安全权限
  • web开发中如何解决自定义事件解决重复请求BUG的问题
    这篇文章将为大家详细讲解有关web开发中如何解决自定义事件解决重复请求BUG的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。BUG的背景最近在开发一个组件,好不容易开...
    99+
    2022-10-19
  • 如何解决vue开发移动端使用better-scroll时click事件失效的问题
    本篇内容主要讲解“如何解决vue开发移动端使用better-scroll时click事件失效的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决vue开发移动端使用better-scro...
    99+
    2023-06-20
  • 如何处理PHP开发中的并发操作和线程安全问题
    在PHP开发中,处理并发操作和线程安全问题是非常重要的。特别是在高并发的场景下,如何保证数据的一致性和正确性是一个必须要解决的难题。本文将介绍一些常见的处理并发操作和线程安全问题的方法,并附上具体的代码示例。一、乐观锁和悲观锁乐观锁是一种乐...
    99+
    2023-10-21
    并发操作 - 处理PHP并发 线程安全 - PHP线程安全
  • 网站开发中如何解决网站排名有波动的问题
    网站开发中如何解决网站排名有波动的问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。对于每位做SEO优化的站长而言,是需要付出很大的耐心与努力的事情。当我们的网站主关键词登...
    99+
    2023-06-12
  • C#开发中如何处理并发编程和多线程同步问题及解决方法
    C#开发中如何处理并发编程和多线程同步问题及解决方法在如今的软件开发领域中,并发编程已经成为一种常见的需求。在许多应用程序中,我们需要同时处理多个任务,而多线程是实现这个目标的一种常见方式。然而,处理并发编程和多线程同步问题并不容易。本文将...
    99+
    2023-10-22
    并发编程 解决方法 多线程同步
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作