鼠标进入/离开Polyfill for Chrome / Firefox

时间:2013-09-10 23:05:05

标签: javascript jquery events mouseevent

是否存在IE事件mouseenter / mouseleave的polyfill(或jQuery事件的转换),因此它可以绑定到原始JS事件?

即。我有一个跨浏览器的方式来做到这一点:

node.addEventListener('mouseenter', function() {
    ...
});

node.addEventListener('mouseleave', function() {
    ...
});

我知道应该可以使用以下方式进行自定义事件:

var event = new Event('mouseenter');
node.addEventListener('mouseenter', function (e) { ... });
node.dispatchEvent(event);
etc

1 个答案:

答案 0 :(得分:4)

好的,好像我想出了怎么做:

http://jsfiddle.net/HXwJH/5/

node.addEventListener('mouseover', function() {    
    if (!event.relatedTarget || (event.relatedTarget !== this && !(this.compareDocumentPosition(event.relatedTarget) & Node.DOCUMENT_POSITION_CONTAINED_BY))) {
        this.dispatchEvent(new Event('mouseenter'));
    }
});

node.addEventListener('mouseout', function() {    
    if (!event.relatedTarget || (event.relatedTarget !== this && !(this.compareDocumentPosition(event.relatedTarget) & Node.DOCUMENT_POSITION_CONTAINED_BY))) {
        this.dispatchEvent(new Event('mouseleave'));
    }
});