引言
在W3C发布的DOM2级别的事件规范中,定义了事件接口。事件的调用者通过事件接口获取事件的上下文信息,通常而言,实施事件接口的对象传递第一个参数给事件调用者。每个事件具有特定的类型,而每个类型都具有特定的关联信息,这些信息通过事件类型衍生的特有接口传递给事件调用者,这些衍生接口在事件对象被事件监听器获取时实施。在事件接口规范中,定义了3个常量,7个只读属性与3个事件接口方法。具体如下:
interface Event {
// PhaseType
const unsigned short CAPTURING_PHASE = 1;
const unsigned short AT_TARGET = 2;
const unsigned short BUBBLING_PHASE = 3;
readonly attribute DOMString type;
readonly attribute EventTarget target;
readonly attribute EventTarget currentTarget;
readonly attribute unsigned short eventPhase;
readonly attribute boolean bubbles;
readonly attribute boolean cancelable;
readonly attribute DOMTimeStamp timeStamp;
void stopPropagation();
void preventDefault();
void initEvent(in DOMString eventTypeArg,
in boolean canBubbleArg,
in boolean cancelableArg);
};
事件接口方法
initEvent
initEvent 方法用于初始化通过 DocumentEvent 接口创建的事件。该方法仅在事件通过dispatchEvent 方法发送时被调用。根据需要,该方法可多次调用并且最后一次调用结果优先展示。如果事件子类对象调用initEvent 方法,则只在initEvent 方法中涉及的属性信息会被修改而其他事件属性值将保留不变
参数
eventType (参数类型为DOM字符串):定义事件类型,该类型可为标准规定的任意事件类型或一个新的事件类型,该字符串必须为 一个XML 名称,而新的事件类型不能以字符串“DOM”开头,该前缀为未来事件DOM集合设计保留,强烈推荐第三方公司使用自己公司前缀定义事件类型以避免可能的新事件冲突。
canBubble (参数类型为boolean):规定事件是否可以冒泡
cancelable(参数类型为boolean):规定事件默认行为是否可被阻止
示例
// 创建事件.
var event = document.createEvent('Event');
// 初始化一个点击事件,可以冒泡,无法被取消
event.initEvent('click', true, false);
preventDefault
如果事件可被取消,preventDefault 方法用于标志事件将被取消,这意味着如何正常情况下的事件默认行为将不会发生。对于不能取消默认方法的事件该方法无效,该方法可用于事件流的任意阶段,并且在事件传播过程中一直生效。该方法可用于事件流的任意阶段。
参数
无
示例
var alink=document.getElementById("alink");
subdiv.onclick=function(event){
//阻止链接导航发生
event.prevetnDafault();
};
stopPropagation
如果事件可被取消,preventDefault 方法用于标志事件将被取消,这意味着如何正常情况下的事件默认行为将不会发生。对于不能取消默认方法的事件该方法无效,该方法可用于事件流的任意阶段,并且在事件传播过程中一直生效。该方法可用于事件流的任意阶段。
参数
无
示例
var btn=document.getElementById("myButton");
btn.conclick=function(event){
//停止事件在DOM层次传播
event.stopPropagation();
};