移动端浏览器兼容性问题

2023-11-16

在开发移动端商城项目的时候,在实现功能和处理bug的过程中出现了一些之前没有见过的问题,在这里记录一下。

1. IOS移动端click事件300ms的延迟响应

移动设备上的web网页是有300ms延迟的,玩玩会形成按钮点击延迟甚至是点击失效。这是因为区分单击事件和双击屏幕缩放的历史缘由形成的,javascript

2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展现在手机端上,使用了双击缩放(double tap to zoom)的方案,好比你在手机上用浏览器打开一个PC上的网页,你可能在看到页面内容虽然能够撑满整个屏幕,可是字体、图片都很小看不清,此时能够快速双击屏幕上的某一部分,你就能看清该部分放大后的内容,再次双击后能回到原始状态。css

双击缩放是指用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。html

缘由就出在浏览器须要如何判断快速点击上,当用户在屏幕上单击某一个元素时候,例如跳转连接,此处浏览器会先捕获该次单击,但浏览器不能决定用户是单纯要点击连接仍是要双击该部分区域进行缩放操做,因此,捕获第一次单击后,浏览器会先Hold一段时间t。若是在t时间区间里用户未进行下一次点击,则浏览器会作单击跳转连接的处理。若是t时间里用户进行了第二次单击操做,则浏览器会禁止跳转,转而进行对该部分区域页面的缩放操做。那么这个时间区间t有多少呢?在IOS safari下,大概为300毫秒。这就是延迟的由来。形成的后果用户纯粹单击页面,页面须要过一段时间才响应,给用户慢体验感受,对于web开发者来讲是,页面js捕获click事件的回调函数处理,须要300ms后才生效,也就间接致使影响其余业务逻辑的处理。

解决方案:

  • fastclick能够解决在手机上点击事件的300ms延迟
  • zepto的touch模块,tap事件也是为了解决在click的延迟问题

触摸事件的响应顺序为 touchstart --> touchmove --> touchend --> click,也能够经过绑定ontouchstart事件,加快对事件的响应,解决300ms延迟问题。

2.一些状况下对非可点击元素如(label,span)监听click事件,ios下不会触发

解决方案:

  • css增长cursor:pointer就搞定了。

3. 三星手机遮罩层下的input、select、a等元素能够被点击和focus(点击穿透)

问题发现于三星手机,这个在特定需求下才会有,所以若是没有相似问题的能够不看。首先需求是浮层操做,在三星上被遮罩的元素依然能够获取focus、click、change),有两种解决方案:

  • 经过层显示之后加入对应的class名控制,截断显示层下方可获取焦点元素的事件获取git
  • 经过将可获取焦点元素加入的disabled属性,也能够利用属性加dom锁定的方式(disabled的一种变换方式)

4. h5底部输入框被键盘遮挡问题

h5页面有个很蛋疼的问题就是,当输入框在最底部,点击软键盘后输入框会被遮挡。可采用以下方式解决

let oHeight = $(document).height(); //浏览器当前的高度
   
   $(window).resize(function(){
 
        if($(document).height() < oHeight){
         
        $("#footer").css("position","static");
    }else{
         
        $("#footer").css("position","absolute");
    }
   });

5. android微信浏览器需要交互才能触发state事件

使用history.pushState()添加记录后,点击返回会触发state事件,但是在android的微信浏览器中需要产生交互行为后点击返回才能触发state事件。
解决方案:

  • 在需要触发state的页面设计一个交互
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动端浏览器兼容性问题 的相关文章

  • 如何修复 Eslint 错误“prefer-destructuring”?

    我想像这样缩短 ES6 中的对象文字 const loc this props local 原因是loc foo 比打字容易得多this props local foo 但现在 ESLint 抱怨道 使用对象解构 prefer destru
  • parseInt() 和 Number() 有什么区别?

    How do parseInt https developer mozilla org en US docs Web JavaScript Reference Global Objects parseInt and Number https
  • 这个作用域/闭包什么时候在 javaScript 中被垃圾回收?

    我正在做一门课程 该课程正在讨论范围 闭包并简要提到垃圾收集 课程中提出一个问题 范围保持多久 答案是 直到 不再有任何提及它 是的 所以我们基本上说的是 是的 闭包有点像对隐藏范围对象的引用 所以只要有一些函数仍然有一个闭包 范围 该范围
  • 将数组传递给 include() javascript

    我试图找出一个字符串是否包含存储在数组中的多个字符串 includes 所以我尝试过 let string hello james console log string includes hello james 但它被返回为false 当我
  • angular.isdefine 有什么好处?

    有什么好处angular isdefined超过和超过foo undefined 我一时想不出有什么好处 在 Javascript 中以任何方式访问真正未定义的变量 除了 typeof 都会抛出错误 你只能使用Angular isDefin
  • 强制 Javascript 编码风格的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要自动检查不同人编写的javascript源代码的风格 你知道有什么好的工具可以做到这一点吗 与 emacs 集成将是一个优势 先感谢
  • TinyMCE 选择文本并使用 javascript 激活链接对话

    我正在尝试编写一个自动化 使用黄瓜 水豚 硒 测试 它将在tinymce框中选择一些文本 单击链接按钮 然后打开链接选择页面 但链接按钮仅在选择某些文本时才变为活动状态 所以第一轮 tinyMCE activeEditor selectio
  • 在模型对象上设置属性?

    Hi 我正在构建 ASP NET MVC 站点并遇到了问题 在我的项目中 我得到了一个 modelview 类 其中包含几个属性 例如 public class myModelView public int MyProperty1 get
  • jsx转js后dom未定义错误

    我创建了一个 jsx 文件 如下所示 jsx dom function use strict define jquery react react dom function React ReactDOM var AppView React c
  • 针对较小屏幕的拆分表行

    我有一个固定宽度为 960px 有 5 列的表格 当我在移动设备中查看时 我想制作第 3 4 5 列 看起来就像在下一行 有什么方法可以让 CSS 打断一行 使其看起来像这样 但是 还保留原来的HTML代码吗 您可以使用 FlexBox f
  • 是否可以模拟 isTrusted=true

    我希望在调用 touchStart 事件时能够模拟 isTrusted true 是否有任何库或任何类型的解决方法可以实现这一点 以下是我以编程方式运行 touchStart 时的输出与实际调用 touchStart 时的输出 我正在使用移
  • -moz-变换 z-index 错误?

    In 这个测试用例 http jsfiddle net MZ7PX 没有 moz transform rotate 31deg 黄色框是可见的 它应该是可见的 但是如果我添加这个 尽管有一个黄色框是不可见的z index of 999 Wh
  • 有没有办法在不托管网站的情况下呈现网站并共享它?

    我正在为一个项目创建一个 repl it 网站 问题是我的老师要求不要发布该网站 这意味着我无法使用 repl it 来托管它 我想知道是否有任何方法可以制作可以通过 Google Chrome 查看的网站副本 而无需连接到主机 我有所有的
  • HTML Canvas:如何绘制翻转/镜像图像?

    当我在 HTML 画布上绘制图像时 我试图翻转 镜像图像 我发现一个游戏教程显示了角色必须面对的每个方向的精灵表 但这对我来说似乎不太正确 特别是因为每个框架都有不同的尺寸 实现这一目标的最佳技术是什么 我尝试致电setScale 1 1
  • 为什么 JavaScript 在不同浏览器中不一致?

    在花了无数个小时修复 JS 以使其跨浏览器兼容 主要是 IE 之后 我一直在思考以下问题 Why不是 JavaScript持续的跨浏览器 我的意思是 为什么 JS 不能像 Java 和 Flash 那样好呢 相反 我们必须求助于 jQuer
  • 使用node和multer将图像上传到heroku不起作用

    我正在尝试使用 Node 后端将图像文件上传到 Heroku 我可以使其工作 同样的过程在本地主机测试中工作得很好 但是在将我的项目部署到 Heroku 并测试它之后 过程和文件中出现错误不会上传 后端 let storage multer
  • 是否包括触摸事件客户端X/Y 滚动?

    我正在尝试获取相对于的触摸坐标viewport来自触摸事件的浏览器 例如触摸启动 我尝试从 clientX Y 属性获取它们 但两者实际上都返回包括滚动在内的值 这是违反规范的 因为它说 clientX Y 应该返回坐标而不滚动 我尝试添加
  • 不透明的回复有哪些限制?

    不透明的回应 https fetch spec whatwg org concept filtered response opaque被定义为一部分获取API https fetch spec whatwg org 并表示向远程源发出请求的
  • 如何在禁用按钮上启用 Bootstrap 工具提示?

    我需要在禁用的按钮上显示工具提示 并在启用的按钮上删除它 目前 它的工作原理是相反的 扭转这种行为的最佳方法是什么 rel tooltip tooltip
  • JS 中的展开/休息运算符如何工作? [复制]

    这个问题在这里已经有答案了 我正在努力完全理解扩展 休息运算符在 JS 中的工作原理 我已经阅读了 MDN 文档 但我仍然不完全清楚 我在下面提供了一个示例 我在其中使用了它并且它按预期工作 const users name Samir a

随机推荐

  • Codeforces Round #561 (Div. 2)ABC

    三个题 各位大佬别喷我 我很菜 A Silent Classroom There are n students in the first grade of Nlogonia high school The principal wishes
  • 【03】上下文

    基于智能 合约的安全企业对消费者供应链系统在农产品供应链中使用区块链和智能 合约进行追溯链上 链下 智能 合约的可扩展和隐私保护设计TinyEVM 低功耗物联网设备上的链下 智能 合约区块链技术中的智能 合约和用例概述Blockumulus
  • Java的8种基本数据类型

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 Java数据类型分为两大类 基本数据类型 引用类型 如图所示 下面讲解的是Java的八种基本数据类型 一 按照数据类型来分 1 整
  • 西门子变频器SINAMICS S120电源模块分享

    西门子变频器SINAMICS S120系列 在工业领域中能胜任各种要求严格的驱动控制任务 为用户提供简单有效的驱动控制过程 西门子变频器SINAMICS S120系列可以配置电源模块 来为西门子变频器驱动控制系统提供稳定的电源保障 本文下面
  • 设计模式-模板方法

    文章目录 前言 模板方法模式简介 Java代码示例 模板方法使用场景 模板方法使用场景 前言 当我们需要在一个算法的框架中定义算法的骨架 并将一些步骤的具体实现留给子类来完成时 模板方法模式是一种非常有用的设计模式 这篇博客将介绍模板方法模
  • install.packages(“hgu133a.db“)报错——解决办法

    问题描述 install packages hgu133a db WARNING Rtools is required to build R packages but is not currently installed Please do
  • Sqli-Labs Less1-16关详细讲解

    Sqli Labs Less1 16关详细讲解 一 首先介绍一下这个重要的数据库 information schema数据库 二 Sqli Labs靶场 Get传输方式 Less 1 Union Select注入 闭合符 Less 5 报错
  • freertos中空闲任务函数prvIdleTask()详解

    The Idle task 空闲任务函数 The portTASK FUNCTION macro is used to allow port compiler specific language extensions The equival
  • Verilog开源项目——百兆以太网交换机(一)架构设计与Feature定义

    Verilog开源项目 百兆以太网交换机 一 架构设计与Feature定义 声明 未经作者允许 禁止转载 博主主页 王 嘻嘻的CSDN主页 全新原创以太网交换机项目 Blog内容将聚焦整体架构 模块设计方面 更新周期可能会略慢 希望朋友们多
  • 树状数组详解

    Markdown版本 请点击这个链接 树状数组 Markdown版本 xiji333的博客 CSDN博客 什么是树状数组 树状数组 Binary Indexed Tree B I T Fenwick Tree 是一个查询和修改复杂度都为lo
  • Android中当数据库需要更新时我们该怎么办?

    问题 Android数据库更新并保留原来的数据如何实现 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法 帮助文档中只是说当数据库升级时该方法被触发 经过实践 解决了我一连串的 疑问 1 帮助文档里说的 数据
  • Linux系统shell脚本之批量修改服务器密码

    Linux系统shell脚本之批量修改服务器密码 一 脚本要求 二 脚本内容 三 编辑原始旧密码 四 执行脚本 五 验证密码更改 1 查看更改后的密码文件 2 在远端服务器验证密码 一 脚本要求 可以批量修改服务器的密码 二 脚本内容 bi
  • 【机器学习】机器学习回归模型的最全总结!

    导读 大家好 我是泳鱼 一个乐于探索和分享AI知识的码农 回归分析为许多机器学习算法提供了坚实的基础 在这篇文章中 我们将介绍回归分析概念 7种重要的回归模型 10 个重要的回归问题和5个评价指标 什么是回归分析 回归分析是一种预测性的建模
  • Linux系统与管理 - (六)用户与组❤

    自说 学习路径 用户管理 用户管理命令 组管理 组管理命令 目录和文件的权限 自说 在Windos系统中 用户的概念我们并不陌生 它是一种身份也是一种权限 不同的用户也相应有着不同的使用 下面细说下Linux中的用户与组 学习路径 Linu
  • windows上nacos自启动的三种方法

    前提 windows上先安装nacos 备注 方法一 二都是以 windows服务 形式进行自启动 效果类似于mysql的windows服务 但这种方法nacos服务可能会启动失败 不想浪费时间的博主建议直接跳转方法三 跟nacos自启动死
  • 初级java工程师笔试题

    最近面试很头疼 因为满以为自己工作了1年多了 实际coding经验却压缩到不到1年 每每被面试官 痛扁 心里特别不痛快 总以为我能给你交活不就完了吗有必要在基础上为难我吗 相信大多数不会总结 在面试中屡屡受挫的小伙伴你也是差不多的吧 因为没
  • 邮AI——AI陪你“邮”笑邮语!

    亲爱的小伙伴们 你是否有过写邮件的时候 脑袋一片空白 就像忘记刷牙一样让人尴尬 别担心 因为有一个 邮 到了幽默智能的解决方案 邮AI 它不仅能帮你写邮件 还能陪你 邮 笑邮语 邮AI 顶级AI大脑 不只是靠模板搞笑 它是真正的幽默高手 从
  • Altium Designer借助嘉立创添加PCB封装和3D模型

    目录 引言 打开立创专业版EDA 建立项目 从立创商城找到器件编码 添加PCB封装 导出和修改3D封装 引言 由于使用Altium Designer的频率并不是特别高 所以每一次使用总是得东跌西撞的才回忆起一些使用步骤 因此 想在这里记录一
  • 【PyTorch】语言模型/Language model

    1 模型描述 1 语言模型的定义 来自于维基百科 统计式的语言模型是一个几率分布 语言模型提供上下文来区分听起来相似的单词和短语 例如 短语 再给我两份葱 让我把记忆煎成饼 和 再给我两分钟 让我把记忆结成冰 听起来相似 但意思不同 语言模
  • 移动端浏览器兼容性问题

    在开发移动端商城项目的时候 在实现功能和处理bug的过程中出现了一些之前没有见过的问题 在这里记录一下 1 IOS移动端click事件300ms的延迟响应 移动设备上的web网页是有300ms延迟的 玩玩会形成按钮点击延迟甚至是点击失效 这