当点击浏览器a标签的时候,浏览器的默认机制如下:

1、触发a的click事件
2、读取href属性的值
3、如果是URI则跳转
4、如果是javascript代码则执行该代码

下面我们一起来做一个实验:

我们在一个html页面中写下如下代码:

1
<a href="http://www.baidu.com" id="a">这是一个a标签</a>

代码只有一个a标签,接下来我们使用js分别给a标签触发 touchstart、touchend、mousedown、mouseup、click 事件,测试一下能够是a标签跳转的都有哪些事件,我们的js代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 事件数组
var events = 'touchstart touchend mousedown mouseup click'.split(' ');
var n = 0;
// 开启定时器,每两秒钟为a标签触发相应事件
var timer = setInterval(function(){
var event = new Event(events[n]);
document.getElementById('a').dispatchEvent(event); // 触发事件。
console.log(event.type);
n++;
if (n == events.length) {
clearInterval(timer);
}
},2000);

我们可以看到,在控制台中每隔两秒钟就会打印出当前a标签触发的事件,当最后一个click事件触发时,a标签执行了跳转,跳转到了百度,这也就说明,a标签的跳转只有click事件能够触发,所以当点击a标签,发出请求的时候,浏览器会先去触发a的click事件,我们都知道,click事件在移动端会有300毫秒的延迟,所以这就是首页中列表点击迟钝的原因,而我之前一直认为的是,a标签的跳转与click事件无关。我怎么这么low呢?????????

所以最后:大家以后开发移动端页面的时候,不要觉得你没有显示的去给某个元素绑定click事件就不会存在300毫秒延迟的问题,实际上a标签的跳转也会触发click事件,如果不加处理的话,也会有300毫秒延迟的问题,这对于用户体验是极其不好的。

来自http://hcysun.me/2015/11/26/a%E6%A0%87%E7%AD%BE%E7%9A%84href%E5%B1%9E%E6%80%A7%E4%B8%8Eclick%E4%BA%8B%E4%BB%B6%E7%9A%84%E7%83%A6%E6%81%BC/#more

a标签与click的关系的更多相关文章

  1. 如何用按钮的click事件去触发a标签的click事件

    在jQquery中,可以用如下方式触发input.a标签的click事件: <input id="my_input" /> <a id="my_a&qu ...

  2. a标签的click事件问题

    easy知识点, a标签的click事件和href共存会在执行click事件后触发href里面的链接,如果把href设为空字符串:href="",则会使用当前页面的url作为跳转链 ...

  3. a标签包着img事件 ie下 a标签的click事件失效

    整个大的背景框有个点击事件, 如果标签结构是(详细的css样式略) a{background:green;} <a href=""> <img src=" ...

  4. 【转】HTML中A标签与click事件的前世今生

    在动态网页中,常常需要在单击超链接时处理一些数据,而不是跳转一个网页.在这种情况下,通常有以下三种处理方式: 不设置<a>标签的href属性,只设置onclick属性.在这种处理方式下,通 ...

  5. 使用jquery trigger 触发a标签的click事件取代window.open方法

    var ohtml='<div class="friend-dialog tac pt15 pb20">'+ '<div class="f-h32&qu ...

  6. EasyUi中的datagird中a标签的click事件无法触发?(已解决)

    ***************************2015-10-29 21:07************************* 问题如下: datagrid最后一列编辑中有如下a标签 { f ...

  7. JQuery的click,trigger触发a标签的click事件无效的问题分析

    今天在做一个手机端webAPP链接下载的时候,给a标签一个下载链接,但是通过 <a id="downFile" download="" href=&quo ...

  8. 2 HTML简介&标签嵌套和并列关系&文档声明

    HTML:Hyper Text Markup Language  超文本标签语言(hyper:精力旺盛的 markup:标记 n noun) HTML不是编程语言,而是一种标记语言(就是一套标记标签) ...

  9. jquery中对动态生成的标签响应click事件(二)…与ajax交互使用

    <%@ page language="java" contentType="text/html; charset=GB18030" pageEncodin ...

随机推荐

  1. 重叠I/O模型

    一. 重叠I/O的概念当调用ReadFile和WriteFile时,如果最后一个参数lpOverlapped设置为NULL,那么线程就阻塞在这里,直到读写完指定的数据后,它们才返回.这样在读写大文件的 ...

  2. Linux 文件的基本操作

    1>.新建空白文件: touch命令-->$ touch test 2>.新建目录: mkdir命令-->$mkdir mydir 使用 -p参数:同时创建父目录-->$ ...

  3. liunx 下 部署并运行java项目(非web)

    1. 将这三个包上传到liunx上,之后写一个run.sh 的脚本文件,然后在lib包中上传包<sunjce-provider.jar>包. 2.启动run.sh( ./run.sh st ...

  4. 当你刷新当前Table时,刷新后如何回到你上一次所在位置呢?

    第一: 在你刷新前保存所在位置的行号 procedure XXXClass.LockPositionEx;begin DisableControls; FHistoryRecNo := 0; FHis ...

  5. 两个七牛app上传小脚本

    把要更新的app放到/home/data下面 安卓: cat upload_apk.sh #!/bin/bashUser=xxxxx@qq.comPass=xxxxxxqrsctl-v3.1.2016 ...

  6. Qt中sizeof

    class a{ int d; // virtual void ssss(); }; qDebug() <<sizeof(a) << sizeof(int) << ...

  7. 2016 - 3 - 12 SQLite的学习之SQL语言入门

    1.SQL语句的特点: 1.1 不区分大小写 1.2 每条语句以;结尾 2.SQL语句中常用关键字: select,insert,update,from,create,where,desc,order ...

  8. 从UWP到SWIFT-开始

    hi,all 我呢,是一个win10 uwp的开发者,从wp7.wp8.wp8.1.win8.1 到现在的win10,一直在windows阵营,做过一些大家比较熟悉的东西现在也还是在做win10的uw ...

  9. gantt甘特图的制作过程

    甘特图主要是用来做项目管理的,可以清楚的看到任务间的逻辑关系,任务与时间关系和任务间并行关系. 在甘特图中,横轴方向表示时间,纵轴方向并列着活动列表.图表内可以用线条.数字.文字代号等来表示计划(实际 ...

  10. [解决方案] pythonchallenge level 2

    http://www.pythonchallenge.com/pc/def/ocr.html 根据页面提示查看网页源代码,在最后:<!--find rare characters in the ...