Internet Explorer和JavaScript事件currentTarget

xde*_*000 44 javascript events internet-explorer

有没有办法用IE 7或8获取事件的当前目标?

使用其他浏览器(firefox,opera,chrome等)我们可以使用 event.currentTarget或者也可以使用this关键字来引用处理事件的对象.

但是在Internet Explorer中我们没有currentTarget属性而且this引用了window对象!

那我该怎么办呢?

alv*_*spo 30

你可以做点什么

target = (event.currentTarget) ? event.currentTarget : event.srcElement;
Run Code Online (Sandbox Code Playgroud)

虽然@Marc提到你可以使用一个JQuery框架来为你规范化事件.

  • 这不正确,event.srcElement等于event.target.event.currentTarget是其他东西,更难以规范化. (31认同)
  • 我认为这个答案是错误的.srcElement是事件的原始源,不一定是当前目标. (11认同)
  • 有用但不完整.在这里阅读(http://www.howtocreate.co.uk/tutorials/javascript/eventinfo)我发现你必须在你的代码之前加上"if(window.event){event = window.event;}". (4认同)
  • 参考srcElement:http://msdn.microsoft.com/en-us/library/ms534638(v = vs.85).aspx (2认同)
  • 看起来@David是对的,请参阅http://www.quirksmode.org/js/events_order.html的结尾 (2认同)

gpa*_*sse 25

我有类似的问题.我解决了使用关键字它this在说明上brainjar.com文章

要获取IE中currentTarget属性的等效项,请在标记中设置事件处理程序时使用this关键字作为参数.

...

function myHandler(event,link){...}

在同一页面上,您可以找到下表:

在此输入图像描述


Mar*_*une 13

简短的回答是:使用jQuery.

虽然event.currentTarget不是在IE浏览器访问,jQuery将正常化的事件,你让你的代码也将在IE浏览器(如说这里)

请注意event.srcElement,正如在其他答案中所建议的那样使用等效,因为srcElement对应于本页末尾所解释的target,而不是如此.currentTarget

  • 这不是问题的答案.它没有提供任何解决方案.:( (8认同)
  • 我想这是一个答案,但我假设@ xdevel2000要求一个纯粹的JS答案.我为任何误解而道歉,而不是解释我的评论. (2认同)

Tom*_*Tom 1

我假设您想要使用“this”上下文,因为同一个处理程序将处理多个可能的对象。在这种情况下,请参阅 quirksmode 重新编码竞赛中出色的 AddEvent 脚本。(http://www.quirksmode.org/blog/archives/2005/09/addevent_recodi.html)。这段代码让我能够从 html 中获取最后的 javascript。更重要的是,它似乎适用于我测试过的所有浏览器。简单紧凑。