JavaScript高级手记(事件对象和默认行为)

JavaScript高级手记(事件对象和默认行为)

/* 
 * 事件对象:存储当前事件操作及触发的相关信息的(浏览器本身记录的,记录的是当前这次操作的信息,和在哪个函数中无关)
      给当前元素的某个事件行为绑定方法,当事件行为触发,不仅会把绑定的方法执行,而且还会给方法默认传递一个实参,这个实参就是事件对象

  * 鼠标事件对象  MouseEvent
    + clientX/clientY  鼠标触发点距离当前窗口的x/y轴坐标(只对当前屏,卷去的部分不计算在内)
    + pageX/pageT  鼠标触发点距离当前body的x/y轴坐标(不受页面滚动的影响)
    + type 事件类型
    + target / scrEment  获取当前事件源(当前操作的元素)
    + path  传播路径
    + ev.preventDefault() / ev.returnValue=false  阻止默认行为
    + ev.stopPropation() / ev.cancelBubble=true  阻止冒泡传播
    + ...

  * 键盘事件对象 KeyboardEvent
    + key / code 存储按键名字
    + which / keyCode  获取按键的键盘码
      + 方向键 左37 上38 右39 下40
      + Space 空白键 32
      + BackSpace 回退键 8
      + Delete 删除键 48
      + Enter  回车键 13
      + Shift  16
      + Ctrl 17  
      + Alt 18
      + ...

  * 手指事件对象  TouchEvent(移动端)
    + changedTouches / touches  都是用来记录手指的信息的,常用的是changedTouches
      + 手指按下、移动、离开屏幕 changedTouches都存储了对应的手指信息,哪怕离开屏幕后,存储的也是最后一次手指在屏幕中的信息;而touches在手指离开屏幕后,就没有任何信息了;
      + 结果都是一个ToucheList集合,记录每一根手指的信息
      + ev.changedTouches[0]  第一根手指的信息
        + clientX/clientY
        + pageX/pageY
        + ...

  * 普通事件对象 Event
    + ...

*/
/* 
 * 默认行为:浏览器会赋予元素很多默认的行为操作
      + 鼠标右键菜单
      + 点击A标签发生页面跳转/跳转到指定位置(锚点定位)
      + 键盘按下输入内容
      + ...

  可以基于ev.preventDefault() 来禁用这些默认行为

*/

// 禁用鼠标右键菜单(可以改成自己想要的内容)
window.oncontextmenu = function(ev) {
  ev.preventDefault();
}
// 禁用a标签发生页面跳转
// 点击啊标签是先触发其点击事件行为,再触发其默认行为,所以可以通过给a标签的点击事件绑定方法,在方法中调用 ev.preventDefault()来阻止其默认行为
let a = document.querySelector('a');
a.onclick = function(ev) {
  ev.preventDefault();
  // 或者
  // return false;
}


let n = null;
document.body.addEventListener('click',function(ev){
  n = ev;
  console.log(ev, 0);
});
document.body.addEventListener('click', function(e){
  console.log(n === e);  // => ture
  console.log(e, 1);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值