<a href="

<a href="

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  前阵子在一个移动项目中,通过 <a href = “#” >  的方式 绑定click 事件来提交一个表单,由于表单信息比较敏感,于是采用的post 同步提交的方式,原本到也没有什么。后来万恶的PM说 “你这个按钮呀,要固定在底部比较好” ,于是乎就通过 position:fixed 固定到底部了。那么,问题来了 , 在ios 下,虚拟键盘是浮在页面上层的,导致的结果是当键盘收起后,浮在最底部的按钮不在最底下,而跑到中间来了,(极端条件下还可能挡住输入框导致无法输入),并且随着屏幕的滚动而滚动,,(表现类似于absolute) ,,高大上的苹果也是真心坑了一回。

  怎么办呢? 两种方案,一滚动时动态计算位置,实时监控位置必定是要消耗性能的,二是由于无法监控到虚拟键盘打开或者关闭,所以只能通过对表单元素绑定focus和blur事件来改变按钮position来达到想要的效果。于是balabala又搞完了。

  搞完后就开始测试,然后有发现当有input元素处于focus状态时,点击提交按钮,无效!!!我再点,好了。。。

  原因是因为blur事件会阻止click事件的执行。。。

    好,我继续改。

  blur事件会阻止click事件的执行,但是不会阻止touch事件,于是想起把click改成tap吧。还真行。不用再点击两次了。

  大功告成,我得意的笑,我真聪明。

  balabala 就上线了。

  一上线发现提交不了了。。。有一定概率出现请求被canceled 。。。

             <a href="<a href=&quo_source title

各种google没找出原因,,问题出在哪里?click是没有问题,换成tap便有问题了,于是乎查了一下 touch event 的执行顺序,大致是这样

  <a href="<a href=&quo_source title

于是我测试 mouseup 是好的,touchend也是有问题的,,tap也是有问题的,,而当我用tap事件,handler处理的时候延迟100ms再$(‘*Form’).submit() 又可以正常提交了。原来是submit执行的时机问题。

继续各种debug 抓虫子,,历史遗留的坑啊,,

最终到 <a href = “#” > 了,,当按钮点击事件执行,在请求hash前执行submit , 请求还没返回,由于改变了hash,同步的submit被cancel了,,,而由于各种原因submit执行前,hash已经改变的话就可以顺利提交了,,

 

于是乎,把 <a href = “#” >  改成 <a href = “javascript:void(0)” > 终于万事大吉了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166953.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker 现实—联网多台物理主机,容器桥到物理网络(三)

    docker 现实—联网多台物理主机,容器桥到物理网络(三)

    2022年1月4日
    79
  • DataFrame的apply()、applymap()、map()方法[通俗易懂]

    DataFrame的apply()、applymap()、map()方法[通俗易懂]对DataFrame对象中的某些行或列,或者对DataFrame对象中的所有元素进行某种运算或操作,我们无需利用低效笨拙的循环,DataFrame给我们分别提供了相应的直接而简单的方法,apply()和applymap()。其中apply()方法是针对某些行或列进行操作的,而applymap()方法则是针对所有元素进行操作的。1map()方法Themapmethod…

    2022年5月17日
    30
  • 读还是不读:that is the question

    点击上方☝,轻松关注!及时获取有趣有料的技术文章一个人只拥有此生此世是不够的,他还应该拥有诗意的世界。——王小波读书日今天是2020年的世界读书日,时间过的就是那么的快,不感概都不行!想…

    2022年2月28日
    57
  • 简单了解Activity工作流引擎

    简单了解Activity工作流引擎一、什么是工作流以请假为例,现在大多数公司的请假流程是这样的员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑采用工作流技术的公司的请假流程是这样的员工使用账户登录系统——点击请假——上级登录系统点击允许就这样,一个请假流程就结束了有人会问,那上级不用向公司提交请假记录?公司不用将记录录入电脑?答案…

    2022年7月11日
    23
  • Linux使用rpm命令卸载软件[通俗易懂]

    Linux使用rpm命令卸载软件[通俗易懂]window上面要卸载一个软件很容易,在系统软件管理里面或者通过第三应用工具,比如360软件管理。如果是Linux需要卸载一个软件应该怎么样操作??rpm-q-a#查询所有已安装的软件-qquery查询-aall所有查询所有安装的软件[root@cdh1~]#rpm-q-agnome-session-xsession-2.28.0-18.el6.x86_64m17n-contrib-assamese-1.1.10-4.el6_1.1.noarchm17n-con

    2025年9月23日
    7
  • 测试用例设计的八大要素及ANSI/IEEE 829标准和编写示例[通俗易懂]

    测试用例设计的八大要素及ANSI/IEEE 829标准和编写示例[通俗易懂]1、测试用例的八大要素1.用例编号和其他编号一样,测试用例编号是用来唯一识别测试用例的编号,要求具有易识别和易维护性,用户可以很容易根据用例编号获取到相应用例的目的和作用,在系统测试用例中,编号的一般格式为A-B-C-D这几部分的作用分别如下:A:产品或项目类型,如CMS(内容管理系统)、CRM(客户关系管理系统)B:一般用来说明用例的属性,如ST(系统测试)、IT(集成测试)、UT(单元测试)C:测试需求的表示,说明该用例针对的需求点,可包括测试项和测试子项等,如文档管理、客户投诉信息管理

    2022年6月28日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号