iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >怎么理解Web前端开发中的Touch事件
  • 348
分享到

怎么理解Web前端开发中的Touch事件

2024-04-02 19:04:59 348人浏览 八月长安
摘要

这篇文章主要介绍“怎么理解WEB前端开发中的Touch事件”,在日常操作中,相信很多人在怎么理解web前端开发中的Touch事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

这篇文章主要介绍“怎么理解WEB前端开发中的Touch事件”,在日常操作中,相信很多人在怎么理解web前端开发中的Touch事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解Web前端开发中的Touch事件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

然而,开发支持触摸屏的网页与传统意义上的网页有很大的不同。就拿鼠标hover事件来说,例如页面上有一个表格,当鼠标指向表格的title时你希望在附近的某个地方显示一个浮动的tooltip。当然,你希望这个tooltip能更加引起浏览者的注意,因此你自定义了一个DIV元素并且通过javascript让它动态显示或隐藏。这个程序很简单,并且在普通设备的多个不同版本的浏览器上都运行良好。但是如果你在支持触摸屏的设备上浏览网页的时候问题却来了,设备不支持鼠标,因此用户无法用鼠标来hover表格的title元素。用户***能和网页进行交互的设备就是用手指去触摸或滑动屏幕,然而在一个非touch friendly的网页上用手指去触发传统的mouse hover事件会显得非常怪异,你会发现tooltip会在你手指接触到屏幕的一瞬间显示,而后马上会消失。这是因为浏览器默认触发了mouseover和mouseout两个事件,而这两个事件只是在手指接触屏幕这一个操作中完成的,你根本没有办法去控制它。这只是许多不同中的一个小例子,还有很多不一样的地方,如你在传统设备上用鼠标点击一个图片按钮不动用来连续不停地滚动DIV,而在触摸屏上浏览器会默认为你要显示右键菜单而阻止了该事件继续执行。传统设备上通常情况下同一时间里系统只允许一个鼠标接受用户的操作,而触摸屏一般都支持多点触摸甚至支持各种不同的手势,如左右滑动、两只放大缩小和旋转等。

随着HTML5的发展,为了支持对触摸屏的操作,多个浏览器厂商都在自己的浏览器引擎中添加了很多支持touch的事件。但是由于W3C并没有提供一个统一的标准,或者说该标准在不同的浏览器厂商中所遵循的情况也有很大区别,因此我们不得不针对浏览器版本做一些特殊的处理。这到让我想起了IE浏览器在许多方面与其它浏览器的不同,这次也不例外!

这里有一些页面介绍了在不同浏览器中对touch事件的支持,读者可以看一下它们之间到底有哪些不同。

IE浏览器对touch事件的支持:Http://blogs.msdn.com/b/ie/arcHive/2011/09/20/touch-input-for-ie10-and-metro-style-apps.aspx

Firefox浏览器对touch事件的支持:https://developer.mozilla.org/en-US/docs/Web/Guide/Touch_events?redirectlocale=en-US&redirectslug=DOM%2FTouch_events

基本上有两大阵营:IE浏览器和基于Webkit内核的浏览器。

但是IE本身由于各个不同版本之间存在的兼容性问题又有一些区别,常见的如IE7、IE8、IE9和IE10。基于Webkit内核的浏览器如Firefox、Safari、Chrome等都是常用的。这里需要注意的是,Safari提供一个windows的Desktop版本,这个版本不同于Apple提供给它自己设备上的浏览器版本,所以在开发测试的时候需要区别开来。

那么如何才能开发一个通用的支持touch事件的页面呢?基本上,我们只需要区别IE和Webkit内核的浏览器就行了,剩下的兼容性问题通常都比较好解决。MSDN的这个页面介绍了IE对指针和笔势事件的支持http://msdn.microsoft.com/zh-cn/library/ie/hh773557.aspx其中有讲到如何检测对指针事件的支持,我们可以利用该方法来区别IE和其它浏览器。看下面这个程序片段:

if (window.navigator.msPointerEnabled) {        document.getElementById("id0").addEventListener("MSPointerOver", function (e) {                  if (e.pointerType == e.MSPOINTER_TYPE_MOUSE) {             methods.onMouseOver(this, e);         }     });    document.getElementById("id0").addEventListener("MSPointerOut", function (e) {                  if (e.pointerType == e.MSPOINTER_TYPE_MOUSE) {             methods.onMouseOut(this, e);         }     });   document.getElementById("id0").addEventListener("MSPointerDown", function (e) {         if (e.pointerType == e.MSPOINTER_TYPE_TOUCH) {                          methods.onTouchInput(this.parentnode);         }         else {                          methods.onMouseClick(this.parentNode);         }     }); } else {          $(this).bind("touchstart", function (e) {         e.preventDefault();         methods.onMouseClick(this.parentNode);         methods.onMouseOver(this, e);     });          $(this).click(function () { methods.onMouseClick(this); });     $(this).hover(             function (e) {                 methods.onMouseOver(this, e);             },             function (e) { methods.onMouseOut(this, e); }); }

代码有两个主要的分支,针对IE和Webkit内核的浏览器。在IE浏览器中,MSPointerDown事件不会自动阻止鼠标事件,因此需要通过event.pointerType来判断指针类型。event.pointerType是一个枚举变量,一共有三个值:

MSPOINTER_TYPE_TOUCH = 2

MSPOINTER_TYPE_PEN = 3

MSPOINTER_TYPE_MOUSE = 4

很奇怪为什么没有值为1的枚举值?可能是用作保留了吧!这也就是说MSPointerDown事件在触发的同时还会触发鼠标相关的事件,事实上鼠标事件是最开始触发的。因此我们需要先判断指针类型,进行不同的处理。为了增加页面的兼容性,让其在支持鼠标操作的设备上也能有更好的体验,代码中特意添加了MSPointerOver和MSPointerOut事件,并且判断当指针类型为MSPOINTER_TYPE_MOUSE时才去执行对应的鼠标事件。

这里有几个兼容性问题需要考虑:

1. Window.navigator.msPointerEnabled语句只会判断浏览器是否支持MSPointer相关的事件,而不会判断用户的设备是否支持触摸操作。目前只有在IE10上该对象不会返回undefined,其它版本的浏览器均视该对象不存在。如果你想判断用户的设备是否支持触摸操作,应该使用Window.navigator.msMaxTouchPoints,如果该对象存在并且返回的结果大于1,则表示设备支持触摸操作并且是支持多点触摸的。

2. 在IE中,MSPointer相关的事件只会在浏览器支持的时候被触发,如果页面元素同时还带有鼠标事件,则鼠标事件也会被同时触发。

3. Webkit内核的浏览器支持touchstart事件,MSPointer相关的事件在这些浏览器上被视为无效。通过e.preventDefault()语句可以阻止鼠标默认行为,从而不让mouse hover事件触发。

所以,上面代码片段同时兼容了<IE10和IE10,以及兼容在IE10上的触摸和鼠标操作,和非IE内核的浏览器上的触摸和鼠标操作。有一个情况未考虑,那就是<IE10情况下的触摸操作,相信这种设备应该很难见到吧!

当然,你完全可以将鼠标的Click事件当作touch事件来处理,如果元素上除了Click之外没有任何其它的事件。但是如果元素上还有mouse hover相关的事件,则用户在touch的同时触发mouse hover,在这种情况下你或许可以考虑使用上面的逻辑来处理cross events。

到此,关于“怎么理解Web前端开发中的Touch事件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么理解Web前端开发中的Touch事件

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

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

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

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

下载Word文档
猜你喜欢
  • 怎么理解Web前端开发中的Touch事件
    这篇文章主要介绍“怎么理解Web前端开发中的Touch事件”,在日常操作中,相信很多人在怎么理解Web前端开发中的Touch事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • 移动web开发技能之touch事件详解
    目录概述touch事件touch事件分类touch事件对象移动web单击事件iOS单击延迟“单击穿透”问题概述 单击事件是任何一个前端页面中最常用的交互行为之...
    99+
    2024-04-02
  • 移动web开发之touch事件的示例分析
    这篇文章主要介绍移动web开发之touch事件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前面的话iOS版Safari为了向开发人员传达一些特殊信息,新增了一些专有事件。...
    99+
    2024-04-02
  • 移动前端开发和web前端开发的区别该如何理解
    这篇文章给大家介绍移动前端开发和web前端开发的区别该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。既然都是前端开发,两者肯定有紧密的联系,但是楼主主要询问区别,我就先简单聊一下相同点,之后在着重分析不同点。 ...
    99+
    2023-06-05
  • web前端中弹窗是怎么开发的
    这篇“web前端中弹窗是怎么开发的”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“web前端中弹窗是怎么开发的”文章吧。状态驱...
    99+
    2023-07-05
  • 移动前端开发和web前端开发的区别是什么
    这篇文章主要讲解了“移动前端开发和web前端开发的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“移动前端开发和web前端开发的区别是什么”吧!移动...
    99+
    2024-04-02
  • web前端开发中的函数是什么
    本篇内容主要讲解“web前端开发中的函数是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端开发中的函数是什么”吧!  函数  将代码编写在函数中,就可以避免在非必要情况下调用该代码,...
    99+
    2023-06-05
  • vue中怎么自定义移动端touch事件
    这期内容当中小编将会给大家带来有关vue中怎么自定义移动端touch事件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。用法:**HTML** <div i...
    99+
    2024-04-02
  • web前端中事件驱动指的是什么
    这篇“web前端中事件驱动指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“web前...
    99+
    2024-04-02
  • web中有什么前端开发工具
    这篇文章给大家分享的是有关web中有什么前端开发工具的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。web前端开发工具有哪些:  1、Bootstrap  Bootstrap 是快速开发 Web 应用程序的前端工具...
    99+
    2023-06-08
  • web前端怎么高效的与后端协作开发
    本篇内容介绍了“web前端怎么高效的与后端协作开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.前后端...
    99+
    2024-04-02
  • JavaScript 事件委托:前端开发的艺术
    什么是 JavaScript 事件委托? JavaScript 事件委托是一种将事件处理程序附加到文档中某个元素的祖先元素,而不是直接附加到触发事件的元素本身的技术。当触发事件时,事件会从触发元素冒泡到祖先元素,然后才能到达文档。通过在祖...
    99+
    2024-02-06
    JavaScript, 事件委托, 前端开发, 性能, 代码可读性
  • web前端开发的规范是什么
    这篇文章主要为大家展示了“web前端开发的规范是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web前端开发的规范是什么”这篇文章吧。 web前端开发有...
    99+
    2024-04-02
  • 如何理解前端开发中的MCRV模式
    如何理解前端开发中的MCRV模式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,...
    99+
    2024-04-02
  • web前端开发中的规范要求有哪些
    这篇文章主要介绍了web前端开发中的规范要求有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端开发中的规范要求有哪些文章都会有所收获,下面我们一起来看看吧。web前端开发中,适当的规范和标准绝不是消...
    99+
    2023-07-04
  • web前端开发中的常见错误有哪些
    本篇内容介绍了“web前端开发中的常见错误有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义首先,我...
    99+
    2024-04-02
  • web前端开发中的while循环实例分析
    今天给大家介绍一下web前端开发中的while循环实例分析。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。while循环while(循环终止条件){}案例&nb...
    99+
    2023-06-05
  • 学HTML5开发前景怎么样?Web前端和Java谁的薪水高?
    越来越多的技术岗位人才出现了稀缺状态,HTML5开发工程师基本已经成为了每家互联网公司不可缺少的人才,目前国内移动端人才空缺严重,很多公司更是高薪难求HTML5开发人才。据统计,我国对于高级HTML5开发人员的缺口将达到12万左右,开发人员...
    99+
    2023-06-03
  • Web前后端分离开发的方法是什么
    本篇内容主要讲解“Web前后端分离开发的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Web前后端分离开发的方法是什么”吧!在传统的Web应用开发中,大多数的程序员会将浏览器作为前后端...
    99+
    2023-06-01
  • 成为优秀Web前端开发人员的必备条件
    在当今数字化时代,Web前端开发人员扮演着至关重要的角色。随着互联网的快速发展,Web前端开发人员不仅需要具有扎实的技术基础,还需要具备一系列必备条件,才能成为优秀的Web前端开发人员...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作