Html 如何访问IE9中的Event.target?

Html 如何访问IE9中的Event.target?,html,internet-explorer,events,internet-explorer-9,dom,Html,Internet Explorer,Events,Internet Explorer 9,Dom,HTMLDOM对象模型定义了一个事件对象 查看MSDN,Microsoft记录了一个。它们还作为Internet Explorer早期版本中的target的别名记录: target属性类似于Windows Internet Explorer 8和早期版本中的属性 因此,我现在在Internet Explorer中,坐在单击断点处: <div class="day" onclick="divClick(this)"> function divClick(sender) { v

HTMLDOM对象模型定义了一个
事件
对象

查看MSDN,Microsoft记录了一个。它们还作为Internet Explorer早期版本中的
target
的别名记录:

target属性类似于Windows Internet Explorer 8和早期版本中的属性


因此,我现在在Internet Explorer中,坐在
单击
断点处:

<div class="day" onclick="divClick(this)">

function divClick(sender)
{
   var divCell = sender;
我可以请求
event.srcement
对象:

>> event 
{
    actionURL : "",
    altKey : false,
    altLeft : false,
    behaviorCookie : 0,
    behaviorPart : 0,
    bookmarks : null,
    boundElements : {...},
    button : 0,
    buttonID : 0,
    cancelBubble : false
    ...
} 
>> event.srcElement 
{
    align : "",
    noWrap : false,
    dataFld : "",
    dataFormatAs : "",
    dataSrc : "",
    currentStyle : {...},
    runtimeStyle : {...},
    accessKey : "",
    className : "header",
    contentEditable : "inherit"
    ...
} 
但是
event.target
为空:

>> event.target 
如果我观看
事件
,则没有
目标
属性:

那么,如何访问Internet Explorer(9(文档模式:IE9标准(浏览器模式:IE9))中
事件
对象的
target
属性?

event.target

您是否需要检查它并将其分配给一个变量,然后改用该变量

  var target = event.target ? event.target : event.srcElement;

可能缺少点…

如果要在IE9中使用
event.target
,则需要使用
addEventListener()
-方法将eventhandler分配给元素

<div id="day" class="day"></div>

document.getElementById('day').addEventListener('click',divClick,false);

function divClick(e){
   alert(e.target);
   divCell=this;
   :
}

document.getElementById('day').addEventListener('click',divClick,false);
函数divClick(e){
警惕(如目标);
divCell=这个;
:
}
divClick()。参数
e
包含对事件对象本身的引用

顺便说一句,在MSDN中,您可以找到比Windows开发更适合的IE文档。

使用:

var target = (event.target !== undefined)? event.target.name : event.srcElement.tagName;
然后:

或: 简单使用:

var target = event.srcElement.tagName;

在Chrome35上测试:)

下面是我的调查(在IE9、IE10和IE11、IE8上的边缘浏览器模式下测试)。在IE9模式(IE11)中,event.target作为函数的局部变量可用,不知道它是否与实际的IE9不同

您无法在任何具有内联功能的浏览器中访问
事件。问题是当你这么做的时候

<element onclick="someFunc(this)">
同:

// note that onclick perfectly works, you don't necessarily need addEventListener
document.getElementById('foo').onclick = function(e) { alert(e.target) } //or
document.getElementById('foo').addEventListener('click', function(e) { alert(e.target) }, false);
因此,您可以直接以内联方式作为参数访问事件目标,也可以通过javascript作为对象参数的
target | | srcelem
属性访问事件目标。 您可以在此处自行测试结果:

注意:在内联连接的情况下,脚本的位置至关重要(就在结束正文标记之前)
注意:如果以内联方式附加,鉴于
event.target
是所传递对象的“根”,则无法访问其他事件属性,如
event.type


注意:注意IE开发者模式。我知道这是一种欺骗(例如,在单击“编辑为HTML”之前,在元素树中不能正确显示DOM内容)

这里的问题不是没有使用
addEventListener()
(因为老式的
.onclick
-赋值也可以)。问题是
divClick
得到了
this
(等于
eventobj.target
),但您想要整个
eventobj

在以下两种情况下,您只能以
this
的名称获取
eventobj.target
,并且无法访问传递给onclick处理程序的参数

<div id=xyz onclick="divClick(this);">
document.getElementById("xyz").onclick = function () { divClick(this); };
这是在IE9+和其他浏览器中的xyz元素上启动事件的方式:

document.getElementById("xyz").onclick(eventobj)

存档此文件的简单方法是使用:

var target = event.target || event.srcElement;
  • 避免使用三元运算符
这样做的原因是:

  • 测试
    event.target
    是否为一个,如果该浏览器中不存在,则其计算结果将为false
  • 如果计算结果为false,则它将移动到下一个运算符,在本例中为
    event.srcelelement

  • 这样,您将得到当前浏览器上执行代码的第一个值。

    因为IE(9)说它支持
    event.target
    ,所以我希望使用(只是)
    event.target
    ,但是我没有看到任何
    事件。target
    。您是否考虑过让jQuery这样的库为您做一些不必要的工作?“如果您想使用
    事件。target
    是IE9,您需要使用
    addEventListener()
    ”是否有关于这方面的参考资料,我可以阅读更多信息?我浏览了IEBlog,但没有发现任何提及的内容,
    event.target
    上的MSDN页面也没有提及。我想找到原来的描述,上面说分配
    onclick
    是“错误的”。嗯。。。很抱歉,我无法为您提供任何确切的参考资料,但这是我通过使用IE9了解到的,它是有效的
    onclick
    没有错,但在IE9中,它只是保留了与旧IE版本完全相同的功能。@Teemu:我可以在jQuery中实现同样的功能吗???@hitesh是的,jQuery规范化了一些
    事件
    属性(如
    .target
    ),但您必须用jQuery设置侦听器。
    document.getElementById("xyz").onclick = divClick;
    
    document.getElementById("xyz").onclick(eventobj)
    
    var target = event.target || event.srcElement;