Javascript []如何连接事件侦听器?
在hyperapp代码库中,我们可以看到以下行: 这表明:Javascript []如何连接事件侦听器?,javascript,event-listener,Javascript,Event Listener,在hyperapp代码库中,我们可以看到以下行: 这表明: try { element[name] = value } catch (_) {} 显然,元素是一个HTMLElement,值是一个函数!这里有趣的部分是,如果name是,比如说onclick,value是一个函数,它向控制台打印一些东西,那么上面的代码正确地为onclick添加了事件监听器 我想知道这是addEventListener的缩写还是我错了 我想知道这是否是addEventListener的缩写 不是。是
try {
element[name] = value
} catch (_) {}
显然,元素是一个HTMLElement,值是一个函数!这里有趣的部分是,如果name是,比如说onclick,value是一个函数,它向控制台打印一些东西,那么上面的代码正确地为onclick添加了事件监听器
我想知道这是addEventListener的缩写还是我错了
我想知道这是否是addEventListener的缩写
不是。是旧的DOM0样式的事件处理早于它。如果将函数分配给element.onclick或element.onmouseover等,它会将该函数设置为事件处理程序
与addEventListener不同的是,只有一个函数可以通过这种方式设置;如果您使用第二个函数再次执行此操作,它将替换第一个函数。相比之下,addEventListener可以用于与其他人很好地协作,允许使用多个处理程序
另一个区别是onxyz风格适用于旧的IE,它不支持addEventListener[但支持它的Microsoft唯一的前身attachEvent]。因此,如果不需要与其他人友好相处,那么旧的跨浏览器代码将经常使用onxyz样式。FWIW,如果您仍然必须在中断的兼容模式下支持IE8或IE9-IE11,您可以在中使用hookEvent函数,如果可能,它使用addEventListener或attachEvent
我想知道这是否是addEventListener的缩写
不是。是旧的DOM0样式的事件处理早于它。如果将函数分配给element.onclick或element.onmouseover等,它会将该函数设置为事件处理程序
与addEventListener不同的是,只有一个函数可以通过这种方式设置;如果您使用第二个函数再次执行此操作,它将替换第一个函数。相比之下,addEventListener可以用于与其他人很好地协作,允许使用多个处理程序
另一个区别是onxyz风格适用于旧的IE,它不支持addEventListener[但支持它的Microsoft唯一的前身attachEvent]。因此,如果不需要与其他人友好相处,那么旧的跨浏览器代码将经常使用onxyz样式。FWIW,如果您仍然必须在其中断的兼容模式下支持IE8或IE9-IE11,您可以在中使用hookEvent函数,如果可能,它使用addEventListener或attachEvent。这是addEventListener的一种简写,但有一个主要缺点:您只能有一个处理程序
函数firstHandler{
控制台。日志'1';
}
函数secondHandler{
控制台。日志'2';
}
让onclickEl=document.getElementById'onclick';
让addEventListenerEl=document.getElementById'addEventListener';
//我们可以使用addEventListener绑定多个事件处理程序
addEventListenerEl.addEventListener'click',firstHandler;
addEventListenerEl.addEventListener'click',secondHandler;
//但请注意,当我们对onclick执行相同操作时会发生什么
onclickEl.onclick=firstHandler;
onclickEl.onclick=secondHandler;
加法器
onclick有点像addEventListener的简写,但有一个主要缺点:只能有一个处理程序
函数firstHandler{
控制台。日志'1';
}
函数secondHandler{
控制台。日志'2';
}
让onclickEl=document.getElementById'onclick';
让addEventListenerEl=document.getElementById'addEventListener';
//我们可以使用addEventListener绑定多个事件处理程序
addEventListenerEl.addEventListener'click',firstHandler;
addEventListenerEl.addEventListener'click',secondHandler;
//但请注意,当我们对onclick执行相同操作时会发生什么
onclickEl.onclick=firstHandler;
onclickEl.onclick=secondHandler;
加法器
点击查看