您在应用程序的动作脚本中定义侦听组件事件的事件处理函数对象或事件处理函数。
以下范例创建侦听器对象,处理 click
事件,并将它作为事件侦听器添加到 myButton:
listener = new Object(); listener.click = function(evtObj){ trace("The " + evtObj.target.label + " button was clicked"); } myButton.addEventListener("click", listener);
除了使用侦听器对象外,您还可以将函数用作侦听器。如果侦听器不属于对象,它就是函数。例如,以下代码创建侦听器函数 myHandler()
并将它注册到 myButton:
function myHandler(eventObj){ if (eventObj.type == "click"){ // your code here } } myButton.addEventListener("click", myHandler);
有关使用 addEventListener()
方法的详细信息,请参阅使用组件事件侦听器。
如果您知道某个特定对象是某个事件唯一的侦听器,就可以利用新事件模型始终会在组件实例上调用方法这一情况。此方法是事件名称加 Handler
一词。例如,要处理 click
事件,请编写以下代码:
myComponentInstance.clickHandler = function(o){ // insert your code here }
在上面的代码中,如果在回调函数中使用关键字 this
,则该关键字的作用范围是 myComponentInstance。
您也可以使用支持 handleEvent()
方法的侦听器对象。不论事件的名称是什么,都会调用侦听器对象的 handleEvent()
方法。您必须使用 if...else
或 switch
语句来处理多个事件,因此,该语法不够灵活。例如,以下代码使用 if...else
语句处理 click
和 enter
事件:
myObj.handleEvent = function(o){ if (o.type == "click"){ // your code here } else if (o.type == "enter"){ // your code here } } target.addEventListener("click", myObj); target2.addEventListener("enter", myObj);