在处理浏览器事件时,我开始为移动设备整合 Safari 的 touchEvents。我发现addEventListeners 与条件叠加。 这个项目不能使用 JQuery。
addEventListener
标准事件监听器:
/* option 1 */ window.addEventListener('mousemove', this.mouseMoveHandler, false); window.addEventListener('touchmove', this.mouseMoveHandler, false); /* option 2, only enables the required event */ var isTouchEnabled = window.Touch || false; window.addEventListener(isTouchEnabled ? 'touchmove' : 'mousemove', this.mouseMoveHandler, false);
JQuerybind允许多个事件,如下所示:
bind
$(window).bind('mousemove touchmove', function(e) { //do something; });
有没有办法像在 JQuery 示例中那样组合两个事件侦听器? 前任:
window.addEventListener('mousemove touchmove', this.mouseMoveHandler, false);
任何建议或提示表示赞赏!
在 POJS 中,您一次添加一个侦听器。为同一元素上的两个不同事件添加相同的侦听器并不常见。您可以编写自己的小函数来完成这项工作,例如:
/* Add one or more listeners to an element ** @param {DOMElement} element - DOM element to add listeners to ** @param {string} eventNames - space separated list of event names, e.g. 'click change' ** @param {Function} listener - function to attach for each event as a listener */ function addListenerMulti(element, eventNames, listener) { var events = eventNames.split(' '); for (var i=0, iLen=events.length; i<iLen; i++) { element.addEventListener(events[i], listener, false); } }