DOM Level 3 Events 规范引入了事件对象的isTrusted
属性。此属性设置为true
作为用户操作的结果生成事件的时间,以及false
创建事件的时间,例如通过createEvent
:
由用户代理生成的事件,无论是作为用户交互的结果,还是作为对 DOM 更改的直接结果,都受到用户代理的信任,用户代理具有通过该方法生成的脚本所不具备的特权,已DocumentEvent.createEvent("Event")
修改使用Event.initEvent()
方法,或通过方法分派EventTarget.dispatchEvent()
。
目前,似乎只有 IE9+ 和 Firefox 支持这个属性。这是一个工作示例(显然您必须在支持的浏览器之一中运行它):
var elem = document.getElementById("example");
elem.addEventListener("click", function (e) {
alert(e.isTrusted);
}, false);
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
elem.dispatchEvent(evt);
这将false
在模拟事件立即触发时发出警报,并且true
在您实际单击元素时发出警报。