dispatchEvent'mouseover'无效

时间:2015-09-03 16:43:24

标签: javascript events

我有以下代码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时对悬停(因此变为红色)作出反应,但它无法正常工作。我做错了什么?

1 个答案:

答案 0 :(得分:5)

根据this answer,您不能:

  

用户代理生成的事件,无论是作为用户交互的结果,还是作为DOM更改的直接结果,都受到用户代理的信任,具有不通过脚本通过脚本生成的事件提供的特权。 DocumentEvent.createEvent(“Event”)方法,使用Event.initEvent()方法修改,或通过EventTarget.dispatchEvent()方法调度。受信任事件的isTrusted属性值为true,而不受信任事件的isTrusted属性值为false。

     

大多数不受信任的事件不应触发默认操作,但click或DOMActivate事件除外。

建议的方法是在mouseovermouseout事件中添加和删除一个类,我在此jsfiddle中已完成。