如何检测事件是否为浏览器事件
How to detect if the event is a browser event or not
如何根据名称(例如click
)测试事件是否为浏览器事件(例如click
, load
, blur
等)?(and no I'm not using jQuery/mootools/prototype/dojo)
:
在这个函数中,我附加浏览器事件(click
和load
),例如:
observe: function(elements, eventName, callback) {
if (!(elements.length != null)) {
elements = [elements];
}
return this.each(elements, function(e) {
if (helper.hooks.eventObserved != null) {
helper.hooks.eventObserved(eventName, callback, e);
}
if (typeof e === 'string') {
e = this.el(e);
}
if (e.addEventListener) {
return e.addEventListener(eventName, callback, false);
} else if (e.attachEvent) {
return e.attachEvent("on" + eventName, callback);
}
});
},
触发事件:
fire: function(elements, eventName) {
if (!(elements.length != null)) {
elements = [elements];
}
return this.each(elements, function(e) {
var evt;
if (document.createEventObject != null) {
evt = document.createEventObject();
return e.fireEvent("on" + eventName);
} else {
evt = document.createEvent('HTMLEvents');
evt.initEvent(eventName, true, true);
return !e.dispatchEvent(evt);
}
});
},
但是我想要的是测试事件是否存在,例如click
是一个浏览器事件,但login
不是,所以我该如何测试?
看看这个解决方案由jury Zaytsev(现场演示)。
jQuery本身使用它
您可以检查函数/对象element["on"+event]
是否存在:
<a href="http://www.google.com" id="myAnchor">test</a>
<script>
function doesElementHaveEvent(element, event){
return (typeof element["on"+event] != typeof undefined);
}
alert(doesElementHaveEvent(document.getElementById("myAnchor"), "click")); // true
alert(doesElementHaveEvent(document.getElementById("myAnchor"), "login")); // false
</script>
相关文章:
- 如何检测滚动事件是否像在触摸设备上一样只触发一次
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 我能从“;输入“;事件是否有更好的方法来跟踪文本更改
- 此multi-onChange事件是否有效
- 如何使用javascript检查事件是否应用于元素
- React/flux - 子组件用户事件 - 是否应通过调度程序路由所有内容
- webglcontextcreatenerror事件:是否同步触发
- 如何在表单提交时检查firebase推送事件是否成功
- 测试React中的点击事件是否会更新HTML
- jqueryangularjs如何知道鼠标按下事件是否是由浏览器的滚动条触发的
- 重新触发Javascript事件是否安全
- 在开放层 3 中完全渲染地图视图后,事件是否会触发
- JS:如何识别鼠标事件是否由触摸(而不是鼠标)提供
- 如何知道事件是否是在带有 GAS 的 Google 日历中创建的
- 如何检测点击事件是否已由“Enter”触发
- “blur”事件是否仅针对 HTML 表单对象触发
- onblur - 如何分辨点击的内容;或者如何判断 onClick 事件是否正在等待运行
- 检查事件是否已绑定(KEYUP)
- 在backbonejs视图中,keypress/keyup/keydown事件是否仅适用于输入,而不适用于其他元素