2015-09-03 3 views
2

У меня есть следующий код http://jsfiddle.net/yc7sj3pt/2/dispatchEvent «Mouseover» не работает

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

Почему бы не добавить класс и не сделать стиль таким образом? –

+0

@JamesBrierley Я понимаю это решение, я тоже хотел это сделать, но, к сожалению, я не могу – gespinha

ответ

5

Согласно this answer, вы не можете:

События, которые генерируются агентом пользователя, либо в результате взаимодействия с пользователем, или как прямой результат изменений в DOM, доверяют пользовательский агент с привилегиями, которые не предоставляются событиям, генерируемым скриптом, методом DocumentEvent.createEvent («Событие»), модифицированным с помощью метода Event.initEvent() или отправленным методом EventTarget.dispatchEvent(). Атрибут isTrusted доверенных событий имеет значение true, а недоверенные события имеют значение атрибута isTrusted false.

Большинство ненадежных событий не должны запускать действия по умолчанию, за исключением щелчков или событий DOMActivate.

Рекомендуемый подход вместо этого, чтобы добавить и удалить класс на mouseover и mouseout событий, которые я сделал в этом jsfiddle.

+0

Спасибо, кажется, я должен придерживаться этого решения. Иногда лучшие практики должны быть первыми! – gespinha

Смежные вопросы