简体   繁体   中英

Firefox style onclick arguments in IE

In firefox when you add an onclick event handler to a method an event object is automatically passed to that method. This allows, among other things, the ability to detect which specific element was clicked. For example

document.body.onclick = handleClick;

function handleClick(e)
{
    // this works if FireFox
    alert(e.target.className);
}

Is there any way to approximate this in IE? i need to be able to detect which element is clicked from an event handler on the body element.

Here is how would I do it in case I cannot use jQuery

document.body.onclick = handleClick;

function handleClick(e)
{
    //If "e" is undefined use the global "event" variable
    e = e || event;

    var target = e.srcElement || e.target;
    alert(target.className);
}

And here is a jQuery solution

$(document.body).click(function(e) {
  alert($(this).attr("class"));
});

That is not the approved notation to add events to dom nodes.

if (el.addEventListener){
  el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent){
  el.attachEvent('onclick', modifyText);
}

Is the recommended Notation for binding click events cross-browser friendly.

See:

Also, when an event is clicked, the callback function that is executed contains an object "this" which is the entity that was clicked.

function foo() { 
   window.open(this.src, '_blank'); 
}

在IE中它是

e.srcElement

I think IE uses a variable called event . See if that works?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM