首页 > 试题广场 >

假设以下div ```html ...

[不定项选择题]
假设以下div
    ```html
        <div class="a">hello</div>
    ```
    绑定的click事件如下
    ```javascript
        let a = document.querySelector('.a');
        a.addEventListener('click', ()=>{
            console.log(1);
        });
    ```
    以下哪些方法在点击上面的div后,输出1之前输出2:()
  • ```javascript
    a.addEventListener('click', ()=>{
    console.log(2);
    });
    ```
  • ```javascript
    a.addEventListener('click', ()=>{
    console.log(2);
    }, true);
    ```
  • ```javascript
    a.addEventListener('touchstart', ()=>{
    console.log(2);
    });
    ```
  • ```javascript
    a.addEventListener('touchend', ()=>{
    console.log(2);
    });
    ```
在触摸屏幕上的元素时,事件(包括鼠标事件)发生的顺序如下
(1) touchstart
(2) mouseover
(3) mousemove(一次)
(4) mousedown
(5) mouseup
(6) click
(7) touchend

DOM事件流:捕获阶段--目标阶段--冒泡

那么D选项应该不对,但是在手机的 Chrome 测试,是 touchend 先输出,大概是因为移动端的 click 有延时吧,希望大佬可以解答一下。
编辑于 2019-04-04 14:57:39 回复(1)
click 在移动端有延迟的
发表于 2019-04-04 15:30:09 回复(0)
B应该是不正确的吧,点击a触发click事件,a是事件源,也就是在事件源上绑定的click事件,执行事件顺序应该是哪个事件先绑定就先执行,而题目中并没有明确指出选项中的事件先绑定还是题干中的事件先绑定,所以不明确。
发表于 2019-04-03 22:55:40 回复(3)
addEventListener
	
event 必须。字符串,指定事件名。 注意: 不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。  提示: 所有 HTML DOM 事件,可以查看我们完整的 HTML DOM Event 对象参考手册
function 必须。指定要事件触发时执行的函数。  当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, "click" 事件属于 MouseEvent(鼠标事件) 对象。
useCapture 可选。布尔值,指定事件是否在捕获或冒泡阶段执行。 可能值:
  • true - 事件句柄在捕获阶段执行
  • false- false- 默认。事件句柄在冒泡阶段执行


发表于 2019-03-28 10:54:16 回复(0)
1.事件冒泡,addEventListener第三个参数是true/false,默认为false冒泡阶段触发,true为捕获阶段触发。
2. click移动端有延迟
发表于 2019-08-05 21:15:08 回复(0)
题目出的不严谨
发表于 2019-04-09 09:27:58 回复(0)
事件触发顺序:
touchstart
touchend
mouseover
mousemove
mousedown
mouseup
click
useCapture(addEventListener第三个参数为true)
发表于 2019-04-04 15:10:24 回复(0)
试了一下,为什么只有B好使.....
发表于 2019-03-31 23:51:16 回复(1)