跳转到内容

事件处理

事件处理

多个辅助类提供了底层的事件处理能力。

事件对象通常由 ScriptUI 创建并传递给事件处理程序。然而,你可以通过使用 ScriptUI.events.createEvent() 构造一个事件对象,并将其发送到目标对象的 controlobj-dispatchEvent 函数来模拟用户操作。

一个辅助对象 Keyboard state object 提供了在函数执行期间全局访问键盘状态的能力,这在事件处理框架之外非常有用。


UIEvent 基类

封装了在容器和控件层次结构中传播的事件输入信息。这是更专门的 KeyboardEvent 对象MouseEvent 对象 的基类。


UIEvent 对象属性

键盘和鼠标事件都具有以下属性。

bubbles

eventObj.bubbles

描述

当为 true 时,事件支持冒泡阶段。

类型

布尔值


cancelable

eventObj.cancelable

描述

当为 true 时,处理程序可以调用此对象的 preventDefault() 方法来取消事件的默认操作。

类型

布尔值


currentTarget

eventObj.currentTarget

描述

当前正在执行的处理程序注册的元素对象。

如果处理程序在捕获或冒泡阶段被调用,则可能是目标对象的祖先。

类型

对象


eventPhase

eventObj.eventPhase

描述

当前事件传播阶段。以下常量之一:

  • Event.NOT_DISPATCHING
  • Event.CAPTURING_PHASE
  • Event.AT_TARGET
  • Event.BUBBLING_PHASE
类型

数字


target

eventObj.target

描述

事件发生的元素对象。

类型

对象


timeStamp

eventObj.timeStamp

描述

事件发生的时间。一个 JavaScript Date 对象。

类型

对象


类型

eventObj.type

描述

发生的事件的名称。预定义的事件类型包括:

  • "blur"
  • "change"
  • "changing"
  • "enterKey"
  • "focus"
  • "move"
  • "moving"
  • "resize"
  • "resizing"
  • "show"

其他类型名称专门适用于键盘和鼠标事件。

类型

字符串


view

eventObj.view

描述

分发事件的容器或控件对象。

类型

ContainerControl 对象


UIEvent 对象方法

initUIEvent()

eventObj.initUIEvent(eventName, bubble, isCancelable, view, detail)

描述

在事件分发到目标之前修改事件。仅在 UIEvent.eventPhaseEvent.NOT_DISPATCHING 时生效。

在其他阶段忽略。

参数
参数类型描述
eventName字符串事件名称字符串。
bubble布尔值当为 true 时,事件应在目标对象的祖先中触发冒泡阶段。
isCancelable布尔值当为 true 时,事件可以被取消。
viewContainerControl 对象分发事件的容器或控件对象。
detail任意事件的详细信息,根据事件类型而变化。对于点击事件,值为 12,表示单次或双击。
返回


preventDefault()

eventObj.preventDefault()

描述

如果事件可取消(即 cancelable 为 true),则取消此事件的默认操作。

例如,OK 按钮的默认点击操作是关闭包含的对话框;此调用会阻止该行为。

返回


stopPropagation()

eventObj.stopPropagation()

描述

在当前目标执行完处理程序后停止事件传播(冒泡和捕获)。

返回


KeyboardEvent 对象

当发生键盘输入事件时,此类型的对象会传递给注册的事件处理程序。属性反映了键盘事件生成时的按键和修饰键状态。

所有属性均为只读。

KeyboardEvent 对象方法

除了 UIEvent 基类 定义的属性外,键盘事件还具有以下属性。

altKey

eventObj.altKey

描述

当为 true 时,ALT 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


ctrlKey

eventObj.ctrlKey

描述

当为 true 时,CTRL 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


metaKey

eventObj.metaKey

描述

当为 true 时,METACOMMAND 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


shiftKey

eventObj.shiftKey

描述

当为 true 时,SHIFT 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


keyIdentifier

eventObj.keyIdentifier

描述

生成事件的按键,作为包含在字符串中的 W3C 标识符;例如 "U+0044"。参见 W3 Keyset Article

类型

字符串


keyLocation

eventObj.keyLocation

描述

标识按键在键盘上位置的常量。

以下之一:

  • DOM_KEY_LOCATION_STANDARD
  • DOM_KEY_LOCATION_LEFT
  • DOM_KEY_LOCATION_RIGHT
  • DOM_KEY_LOCATION_NUMPAD
类型

数字


keyName

eventObj.keyName

描述

生成事件的按键,作为简单的键名;例如 "A"

类型

字符串


类型

eventObj.type

描述

发生的事件的名称。键盘事件类型包括:

  • keyup
  • keydown
类型

字符串


KeyboardEvent 对象方法

除了 UIEvent 基类 定义的函数外,键盘事件还具有以下函数。

getModifierState()

eventObj.getModifierState(keyIdentifier)

描述

获取此事件中当前使用的修饰键。

参数
参数类型描述
keyIdentifier字符串包含修饰键标识符的字符串,以下之一:
- Alt
- CapsLock
- Control
- Meta
- NumLock
- Scroll
- Shift
返回

布尔值。如果事件发生时给定的修饰键处于活动状态,则为 true,否则为 false


initKeyboardEvent()

eventObj.initKeyboardEvent(eventName, bubble, isCancelable, view, keyID, keyLocation, modifiersList)

描述

重新初始化对象,允许你在构造后更改事件属性。参数设置相应的属性。

参数
参数类型描述
eventName字符串事件名称字符串。
bubble布尔值当为 true 时,事件应在目标对象的祖先中触发冒泡阶段。
isCancelable布尔值当为 true 时,事件可以被取消。
viewContainerControl 对象分发事件的容器或控件对象。
keyID字符串设置 keyIdentifier 值。
keyLocation字符串设置 keyLocation 值。
modifiersList字符串以空格分隔的修饰键名称字符串,例如 “Control Alt”。
返回


MouseEvent 对象

当发生鼠标输入事件时,此类型的对象会传递给注册的事件处理程序。属性反映了事件生成时的按钮和修饰键状态以及指针位置。

在嵌套元素的情况下,鼠标事件类型始终针对最深层嵌套的元素。目标元素的祖先可以使用冒泡来获取其子元素内发生的鼠标事件的通知。

MouseEvent 对象属性

除了 UIEvent 基类 定义的属性外,鼠标事件还具有以下属性。

所有属性均为只读。


altKey

eventObj.altKey

描述

当为 true 时,ALT 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


button

eventObj.button

描述

哪个鼠标按钮改变了状态。

以下之一:

  • 0:两键或三键鼠标的左键,或单键鼠标的按钮,用于激活 UI 按钮或选择文本。
  • 1:三键鼠标的中间按钮,或鼠标滚轮。
  • 2:右键,用于显示上下文菜单(如果存在)。

某些鼠标可能提供或模拟更多按钮,值大于 2 表示此类按钮。

类型

数字


clientX 和 clientY

eventObj.clientX

eventObj.clientY

描述

事件发生时的水平和垂直坐标,相对于目标对象。原点是控件或窗口的左上角,位于任何边框装饰内部。

类型

数字


ctrlKey

eventObj.ctrlKey

描述

当为 true 时,CTRL 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


detail

eventObj.detail

描述

事件的详细信息,根据事件类型而变化。

对于 clickmousedownmouseup 事件,单次点击的值为 1,双击的值为 2

类型

数字


metaKey

eventObj.metaKey

描述

当为 true 时,METACOMMAND 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


relatedTarget

eventObj.relatedTarget

描述
  • 对于 mouseover 事件,指针离开的 UI 元素(如果有)。
  • 对于 mouseout 事件,指针进入的 UI 元素(如果有)。

否则为 undefined

类型

对象


screenX 和 screenY

eventObj.screenX

eventObj.screenY

描述

事件发生时的水平和垂直坐标,相对于屏幕。

类型

数字


shiftKey

eventObj.shiftKey

描述

当为 true 时,SHIFT 键处于活动状态。

如果 keyIdentifier 是修饰键,则值为 undefined

类型

布尔值


类型

eventObj.type

描述

发生的事件的名称。鼠标事件类型包括:

  • "mousedown"
  • "mouseup"
  • "mousemove"
  • "mouseover"
  • "mouseout"
  • "click"(单次点击为 1,双击为 2)

点击事件的顺序为:mousedownmouseupclick

类型

字符串


MouseEvent 对象方法

除了 UIEvent 基类 定义的函数外,鼠标事件还具有以下函数。


getModifierState()

eventObj.getModifierState(keyIdentifier)

描述

获取此事件中当前使用的修饰键。

参数

参数类型描述
keyIdentifier字符串包含修饰键标识符的字符串,以下之一:
- "Alt"