我有以下代码http://jsfiddle.net/yc7sj3pt/2/
document.getElementById('obj_one').addEventListener('mouseover', function(){
var e = document.createEvent('HTMLEvents');
e.initEvent('mouseover', true, false);
document.getElementById('obj_two').dispatchEvent(e);
console.log('hover');
}, false);
我试图让#obj_two
在我mouseover
上#obj_one
时对悬停(因此变为红色)作出反应,但它无法正常工作。我做错了什么?
答案 0 :(得分:5)
根据this answer,您不能:
用户代理生成的事件,无论是作为用户交互的结果,还是作为DOM更改的直接结果,都受到用户代理的信任,具有不通过脚本通过脚本生成的事件提供的特权。 DocumentEvent.createEvent(“Event”)方法,使用Event.initEvent()方法修改,或通过EventTarget.dispatchEvent()方法调度。受信任事件的isTrusted属性值为true,而不受信任事件的isTrusted属性值为false。
大多数不受信任的事件不应触发默认操作,但click或DOMActivate事件除外。
建议的方法是在mouseover
和mouseout
事件中添加和删除一个类,我在此jsfiddle中已完成。