0

我目前正在使用此代码在 Google Chrome 扩展程序中绑定事件:

var bindEvent = function(elem ,evt,cb) {
    //see if the addEventListener function exists on the element
    if ( elem.addEventListener ) {
        elem.addEventListener(evt,cb,false);
    //if addEventListener is not present, see if this is an IE browser
    } else if ( elem.attachEvent ) {
        //prefix the event type with "on"
        elem.attachEvent('on' + evt, function(){
            /* use call to simulate addEventListener
             * This will make sure the callback gets the element for "this"
             * and will ensure the function's first argument is the event object
             */
             cb.call(event.srcElement,event);
        });
    }
};

/* ... */

bindEvent(document,'click', function(event) 
{ var target = event.target || event.srcElement;
    
    /*Code to do stuff about a clicked element*/

    this.removeEventListener('click',arguments.callee,false);
});

它适用于点击事件。现在,我的问题是:我可以使用什么事件来更改悬停而不是简单地单击的元素?最终目标是更改光标悬停的元素的背景颜色。

我试过了mouseover,,mouseenter但无济于事。确切地说,我试图在事件触发时做一个,但它从未真正发生过,除了有一次我单击一个对话框并且它检测到我对这个元素的关注。focusfocusinconsole.log()

我目前正在使用 Chrome (v24.0),但跨浏览器解决方案将是一个不错的功能,因为我计划稍后在 Firefox 上重用该脚本。不过,这不是首要任务。

4

1 回答 1

2

悬停的相关事件是mouseovermouseout- 它们分别在鼠标进入或离开元素时触发。但是,由于该事件也会为您附加侦听器的元素的子元素触发,并且这些事件会冒泡,因此您还必须检查event.target

elem.addEventListener("mouseover", function(event) {
  if (event.target == elem) {
    // Mouse pointer entered elem
  }
}, false);

elem.addEventListener("mouseout", function(event) {
  if (event.target == elem) {
    // Mouse pointer left elem
  }
}, false);
于 2013-05-30T15:25:48.337 回答