ios移动web点击延迟
javascript吧
全部回复
仅看楼主
level 1
ghost40310 楼主
大佬们,请问ios移动端怎么解决点击延迟这个问题呢,fastclick我也引入了,meta标签我也加了,可还是会有延迟,我改为监听touchstart也会有延迟,请问该如何解决,跪求跪求
2020年11月06日 02点11分 1
level 13
你这个要分情况解决,
第一,你检测点击的方法不当。
检查你的检测方法是不是以下两种:
标准的检测方法是监听 click 事件,元素的 onclick 属性,和 js 的 EventTarget.addEventListener("click",function(){}) 两种。
如果你对点击的反应速度有要求或者只是想检测“手指碰到了屏幕”,那就监听 mousedown 事件,然后针对自己的需求调整下算法。
第二,你的脚本程序中含有耗时的代码,导致看上去有延迟。
网页中的脚本与页面渲染是分开进行的,渲染时会中断脚本执行,脚本执行时会中断页面渲染。如果你的脚本在页面上发生点击后占用了很长的运行时间,会导致假死。你需要对自己的脚本进行计时,看看是不是这个原因,如果是这种情况,优化代码。
第三,设备或者软件的原因。
这种是无能为力的情况,我不清楚你的 web 是不是在所有的 iOS 设备上都有这种表现,如果是,那更可能是上面两种原因。如果不是,那有可能你的设备发生了某种异常,又或者你在打开你的网页时有其他因素在占用系统资源,再者可能你用来测试的浏览器对于点击的处理就是这样的。
其他的我就想不到了,有可能你跟我不在一个频道上。
2020年11月06日 18点11分 2
我的逻辑是点击他,然后让他移除dom,用的jquery带的remove方法,ios测试也不是全部不行,iphonex以上都是好的,是因为大量生成dom的原因么,我的逻辑是用settimeout 200ms生成一个dom,一共20s
2020年11月09日 03点11分
@ghost40310 首先,我的建议是抛弃jq,尽可能用原生代码来实现你的功能。因为,第一,jq太过冗余而且不方便自由修改,jq里的很多功能大多数用短短几行代码就能实现,用了jq会让处理过程变复杂有时候还很慢。
2020年11月09日 15点11分
第二,对于大批量的dom操作,通常的建议是一次性完成,如果没有必须的要求建议你一次性完成节点的生成和插入。因为在拥有大量节点的情况下,频繁操作和搜索dom会导致效率下降,对于性能不好的手机更要注意这一点,不过这类影响通常在节点的数量上到以万为单位才会比较明显。
2020年11月09日 15点11分
最后,你要移除的那个dom,在移除的时候不要在代码里用getElement这一类搜索节点的方法去再找一遍它,直接在事件函数里用this指向它,然后通过this或者变量去操作它,这能节省一些时间。
2020年11月09日 15点11分
1