前端学习——事件处理

前端开发中会涉及到一些事件处理,比如鼠标事件,键盘事件等,算是一个比较重要的知识点。

vue封装了一些事件处理等函数和方法,vue的点击事件是通过v-on实现的,也可以简写为@click,当方法不穿任何参数时,会默认传入事件对象event,如下图所示:

前端学习——事件处理_第1张图片

当传入参数时,也可以使用event获取对象,不过有参方法最好显示传入$event事件对象。

前端学习——事件处理_第2张图片

vue官网提供的事件属性包括鼠标事件和键盘事件,官网文档地址: vue官网事件文档

在处理事件时调用 event.preventDefault() 或 event.stopPropagation() 是很常见的。尽管我们可以直接在方法内调用,但如果方法能更专注于数据逻辑而不用去处理 DOM 事件的细节会更好。

为解决这一问题,Vue 为 v-on 提供了事件修饰符。修饰符是用 . 表示的指令后缀,包含以下这些:

  • .stop
  • .prevent
  • .self
  • .capture
  • .once
  • .passive

template





...

TIP

使用修饰符时需要注意调用顺序,因为相关代码是以相同的顺序生成的。因此使用 @click.prevent.self 会阻止元素及其子元素的所有点击事件的默认行为,而 @click.self.prevent 则只会阻止对元素本身的点击事件的默认行为。

.capture.once 和 .passive 修饰符与原生 addEventListener 事件相对应:

template



...
...

.passive 修饰符一般用于触摸事件的监听器,可以用来改善移动端设备的滚屏性能。

TIP

请勿同时使用 .passive 和 .prevent,因为 .passive 已经向浏览器表明了你不想阻止事件的默认行为。如果你这么做了,则 .prevent 会被忽略,并且浏览器会抛出警告。

按键修饰符​

在监听键盘事件时,我们经常需要检查特定的按键。Vue 允许在 v-on 或 @ 监听按键事件时添加按键修饰符。

template


你可以直接使用 KeyboardEvent.key 暴露的按键名称作为修饰符,但需要转为 kebab-case 形式。

template

在上面的例子中,仅会在 $event.key 为 'PageDown' 时调用事件处理。

按键别名​

Vue 为一些常用的按键提供了别名:

  • .enter
  • .tab
  • .delete (捕获“Delete”和“Backspace”两个按键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

系统按键修饰符​

你可以使用以下系统按键修饰符来触发鼠标或键盘事件监听器,只有当按键被按下时才会触发。

  • .ctrl
  • .alt
  • .shift
  • .meta

注意

在 Mac 键盘上,meta 是 Command 键 (⌘)。在 Windows 键盘上,meta 键是 Windows 键 (⊞)。在 Sun 微机系统键盘上,meta 是钻石键 (◆)。在某些键盘上,特别是 MIT 和 Lisp 机器的键盘及其后代版本的键盘,如 Knight 键盘,space-cadet 键盘,meta 都被标记为“META”。在 Symbolics 键盘上,meta 也被标识为“META”或“Meta”。

举例来说:

template





Do something

TIP

请注意,系统按键修饰符和常规按键不同。与 keyup 事件一起使用时,该按键必须在事件发出时处于按下状态。换句话说,keyup.ctrl 只会在你仍然按住 ctrl 但松开了另一个键时被触发。若你单独松开 ctrl 键将不会触发。

.exact 修饰符​

.exact 修饰符允许控制触发一个事件所需的确定组合的系统按键修饰符。

template








鼠标按键修饰符​

  • .left
  • .right
  • .middle

这些修饰符将处理程序限定为由特定鼠标按键触发的事件。

你可能感兴趣的:(前端,学习)