Tre*_*ham 6 javascript javascript-events
从像这样的功能
function eventHandler(e) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
是否有一种可靠而有效的方法来确定是否e是DOM事件?
我不相信有可靠的方法来确定给定对象是否不是DOM 事件。
typeof e将始终返回'object'真正的事件对象,这没有帮助。contructor属性可能看起来很有前途,但可以这样做:function DummyEvent(){
this.constructor.toString = function(){
return "function MouseEvent() { [native code] }";
}
}
Run Code Online (Sandbox Code Playgroud)
这最终console.log(e.constructor)打印出来"function MouseEvent() { [native code] }"
那么,有没有一种“可靠”的方法来判断一个对象是否是一个事件呢?不。
编辑- 请注意,如果您想防止事件欺骗,所有这些都是无关紧要的,因为您可以轻松创建真实事件。
var evt = new Event('click');
var evt2 = document.createEvent('MouseEvents');
evt2.initMouseEvent('click', ...);
//etc
Run Code Online (Sandbox Code Playgroud)
Edit2 - 我创建了一个测试jsFiddle试图找到某种方法来区分对象,但我还没有找到任何明确的东西。请注意,我没有费心指定 的属性,DummyEvent因为这些属性显然很容易被欺骗。
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |