js中点击事件与常用的事件(pc端和移动端)概述
1.点击事件:
在pc端是点击事件,但是在移动端是单击事件,在移动端的项目中我们经常会区分单击做什么和双击做什么,所以移动端的浏览器在识别click的时候,只有确定是单击后才会把它执行,在移动端使用click会存在300ms的延迟:浏览器在第一次点击结束后,还需要等到300ms看是否触发了第二次点击,如果触发了第二次点击就不属于click了,没有触发第二次点击才属于click
但是,在某些场景下需要取消延迟:(1)静止缩放: 使用这个方法必须完全禁用缩放来达到目的,虽然大部分移动端能解决这个延迟问题,但是部分苹果手机还是不行;
width - viewport的宽度; height - viewport的高度 ;initial-scale - 初始的缩放比例; minimum-scale - 允许用户缩放到的最小比例; maximum-scale - 允许用户缩放到的最大比例 ;user-scalable - 用户是否可以手动缩放
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
(2)fastclick.js: FastClick 是 FT Labs 专门为解决移动端浏览器 300 毫秒点击延迟问题所开发的一个轻量级的库。简而言之,FastClick 在检测到touchend事件的时候,会通过 DOM 自定义事件立即触发一个模拟click事件,并把浏览器在 300 毫秒之后真正触发的click事件阻止掉
第一步:在页面中引入fastclick.js文件。
第二步:在js文件中添加以下代码: 在 window load 事件之后,在body上调用FastClick.attach()即可。
window.addEventListener(function(){ FastClick.attach( document.body ); },false );
如果你项目使用了JQuery,就将上面的代码改写成:
$(function() { FastClick.attach(document.body); });
替换移动端的click事件:
(1)使用touchstart :touch事件包括touchstart、touchend、touchmove等,简单使用touchstart来替换click,但问题是,如果我想在同一对象上绑定一个单击事件和一个滑动事件怎么办,这时候就会出现冲突;在移动端,手指点击一个元素,会经过:touchstart --> touchmove -> touchend -->click
touch事件的模型:
事件名 | 作用 |
---|---|
touchstart | 手指按到屏幕上 |
touchmove | 手指在屏幕上滑动 |
touchend | 手指离开屏幕 |
touchcancle |
特殊情况下关闭/退出时触发
|
touch事件的属性:
属性名 | 作用 |
---|---|
type | 事件类型 |
target | 事件源 |
preventDefault(returnValue) | 阻止默认行为 |
stopPropagation(cancleBubble) | 停止事件的传播 |
touches[0].clientX | 触碰位置的x值 |
changedTouches | 当前的值和离开的值 |
(2)tap事件:标准事件中没有tap事件,tap事件是一些库,如zepto,使用touch进行封装的,在touchstart、touchend时记录时间、手指位置,在touchend时进行比较,如果手指位置为同一位置且时间间隔较短,且过程中未曾触发touchmove事件,则调用回调函数;过300ms后还是会产生click事件,只是在该对象上没有进行监听,由此产生了“点透”现象: 1)页面弹出一个模态框,模态框上有个按钮(关闭模态框),按钮正下方(在主页面上)有一个输入框 ;2)当点击模态框上的关闭按钮,模态框立即消失,但300ms后click事件触发,而输入框正好监听click事件,因此输入框会得到焦点
pc端常用的事件:
事件名 | 作用 |
---|---|
click | 当鼠标点击时触发 |
mouseover | 当鼠标指针移动到元素上时触发 |
mouseout | 当鼠标指针移出元素时触发 |
mouseenter | 当鼠标指针移动到元素上时触发(不支持冒泡) |
mouseleave | 当鼠标指针移出元素上时触发(不支持冒泡) |
mousemove | 当鼠标指针移动到元素上时触发 |
mousedown | 当元素上按下鼠标按钮时触发 |
mouseup | 当在元素上释放鼠标按钮时触发 |
mousewheel | 当鼠标滚轮正在被滚动时运行的脚本 |
keydown | 在用户按下按键时触发 |
keyup | 当用户释放按键时触发 |
load | 页面结束加载之后触发 |
scroll | 当元素滚动条被滚动时运行的脚本 |
blur | 元素失去焦点时运行的脚本 |
focus | 当元素获得焦点时运行的脚本 |
change | 在元素值被改变时运行的脚本 |
移动端常用的事件:
事件名 | 作用 |
---|---|
click | 当点击时触发(单击) |
load | 页面结束加载之后触发 |
scroll | 当元素滚动条被滚动时运行的脚本 |
blur | 元素失去焦点时运行的脚本 |
focus | 当元素获得焦点时运行的脚本 |
change | 在元素值被改变时运行的脚本 |
input | 代替keyup、keydown |
touch事件模型 | 处理单手指操作 |
gesture事件模型 | 处理多手指操作 |
详细介绍JavaScript移动端事件的基础及对常用事件库的总结
以上是js中点击事件与常用的事件(pc端和移动端)概述的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

探索前端中类似VSCode的面板拖拽调整功能的实现在前端开发中,如何实现类似于VSCode...

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
