Kod adalah seperti berikut:fungsi addEvent(obj,evt,fn,useCapture){
if(obj.addEventListener){//优先使用W3C事件注册
obj.addEventListener(evt,fn,!!useCapture);
}lain{
if(!fn.__EventID){fn.__EventID = addEvent.__EventHandlesCounter ;}
if(!obj.__EventHandles){ obj.__EventHandles=[];}
if(!obj.__EventHandles[evt]){
obj.__EventHandles[evt]=[];
if(obj["on" evt]){
(obj.__EventHandles[evtype][0]=obj["on" evtype]).__EventID=0;
}
obj["on" evtype]=addEvent.execEventHandles;
}
}
}
addEvent.__EventHandlesCounter=1;
addEvent.execEventHandles = function(evt){
if(!this.__EventHandles) {return true;}
evt = evt || tingkap.acara;
var fns = this.__EventHandles[evt.type];
untuk (var i=0;i
if(fns[i] instanceof Function){
fns[i].panggil(ini);
}
}
};
fungsi delEvent(obj,evt,fn,useCapture){
if (obj.removeEventListener) {//先使用W3C的方法移除事件处理函数
obj.removeEventListener(evt,fn,!!useCapture);
}lain {
if(obj.__EventHandles){
var fns = obj.__EventHandles[evt];
if(fns){delete fns[fn.__EventID];}
}
}
4、标准化事件对象
function fixEvent(evt){
jika(!evt.target){
evt.target = evt.srcElement;
evt.preventDefault=fixEvent.preventDefault;
evt.stopPropagation = fixEvent.stopPropagation;
if(evt.type == "mouseover"){
evt.relatedTarget = evt.fromElement;
}else if(evt.type == "mouseout"){
evt.relatedTarget = evt.toElement;
}
evt.charCode =(evt.type == "keypress")?evt.keyCode:0;
evt.eventPhase = 2;
evt.timeStamp = (Tarikh baharu()).getTime();
}
pulangkan evt;
}
fixEvent.preventDefault=function(){ this.returnValue=false;}
fixEvent.stopPropagation=function(){this.cancelBubble = true;};
fixEvent函数不是单独执行的,它必须有一个事件对象参数,而且只有事件必须有一个事件对象参数,而且只有事件只有事件发发生!的方法是把它整合到addEvent函数的execEventHandles里面。
addEvent.execEventHandles = fungsi (evt)数并执行
jika (!this.__EventHandles) {return true;}
evt = fixEvent(evt || window.event);//在这里对其进行标准化操作
var fns = this.__EventHandles[evt.type];
untuk (var i=0;i< fns.length;i ) {
if (fns[i] instanceof Function) {
fns[i].call(this,evt);//并且将其作为事件处理函数的第一个参数
//这样在事件处理函数内部就可以使用统一的方法访问事件对象了 } } };
><🎜
上面是高手写了,下面整理几个实际的监听事情的例子
复制代码 代码如下:
Hier wird document.getElementById("1").attachEvent("onclick",test); für die dynamische Ereignisbindung verwendet und
document.getElementById("1").detachEvent("onclick",test)
Brechen Sie die dynamische Zeit ab, sodass auf dieses Ereignis nur einmal reagiert werden kann und beim nächsten Mal nicht erneut auf die Schaltfläche geklickt wird Welche Auswirkung hat es? produzieren.
Nachfolgend finden Sie eine weitere Demonstration der jederzeitigen Überwachung von Tastaturereignissen, um festzustellen, ob es sich bei der Eingabe um eine Zahl handelt. Wenn es sich nicht um eine Zahl handelt, erfolgt eine dynamische Eingabeaufforderung und die anschließende Ablehnung der Eingabe