在firefox中,当向方法添加onclick事件处理程序时,事件对象会自动传递给该方法。除其他外,这允许检测单击哪个特定元素的能力。例如
document.body.onclick = handleClick;
function handleClick(e)
{
// this works if FireFox
alert(e.target.className);
}
有没有办法在IE中近似这个?我需要能够检测从body元素上的事件处理程序中单击的元素。
答案 0 :(得分:7)
如果我不能使用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);
}
这是一个jQuery解决方案
$(document.body).click(function(e) {
alert($(this).attr("class"));
});
答案 1 :(得分:3)
这不是将事件添加到dom节点的批准标记。
if (el.addEventListener){
el.addEventListener('click', modifyText, false);
} else if (el.attachEvent){
el.attachEvent('onclick', modifyText);
}
推荐的用于绑定点击事件的表示法是否跨浏览器友好。
见:
此外,单击某个事件时,执行的回调函数包含一个对象“this”,它是被单击的实体。
function foo() {
window.open(this.src, '_blank');
}
答案 2 :(得分:2)
在IE浏览器中
e.srcElement
答案 3 :(得分:0)
我认为IE使用名为event
的变量。看看是否有效?