BOM:重点

77 阅读2分钟

BOM:重点

  • 定时器 + event(事件对象)

事件周期

  • 从事件发生,到所有事件处理函数执行完毕的全过程
  • 3个阶段
    • 捕获阶段:由外向内,记录要发生的事件有哪些
    • 目标优先触发:目标元素->当前点击的实际发生事件的元素
    • 冒泡触发:由内向外,依次执行我们之前记录着的要发生的事件

获取事件对象event

  • 主流:会自动作为事件处理函数的第一个形参传入
  • 老IE:event; - 老IE全局有这个变量
  • 兼容:event;

得到了事件对象event可以做什么

获取鼠标的坐标

  • 获取鼠标相对于屏幕的坐标:e.screenX/Y
  • 获取鼠标相对于窗口/客户端/文档显示区域的坐标:e.clientX/Y
  • 获取鼠标相对于网页的坐标:e.pageX/Y

阻止事件冒泡:

  • 主流:e.stopPropagation();
  • 老IE:e.cancelBubble=true;
  • 兼容:e.cancelBubble=true;//第2次见到小三上位,不光老IE可用,主流也可用

利用冒泡/事件委托

  • 开发中常用,提升网页性能,有了它我们的事件函数也可以换为箭头函数了
  • 优化:如果多个子元素定义了相同 或 相似的事件操作,最好只给父元素定义一次
  • 为什么:每一次绑定一个事件函数,其实都是创建了一个事件对象,创建的事件对象越多,网站性能就越差
  • 淘汰了this,他水性杨花,当前元素
  • 目标元素target:你点击的是哪一个,他永远就是那一个,不会变化的
    • 主流:e.target;
    • 老IE:e.srcElement;
    • 兼容:e.srcElement;

阻止浏览器的默认行为

  • 主流:e.preventDefault();
  • 老IE:e.returnValue=false;
  • 兼容:e.returnValue=false;

新事件

  • 右键事件 - window.oncontextmenu
  • 键盘事件:一般来说用于游戏开发较多+都要搭配上键盘的键码
    • window.onkeydown - 按住和按下,任何键盘按键都可以触发
    • window.onkeypress - 按住和按下,只有字母、数字、回车、空格可以触发,其他按键不行
    • window.onkeyup - 松开,任何键盘按键都可以触发(比手速的游戏)

获取键盘的键码

  • e.keyCode; - 可以获取到你按了那个键,每个键都有自己对应的键码,但是不需要记忆,要么输出看,要么百度搜个表