Html 如何访问IE9中的Event.target?
HTMLDOM对象模型定义了一个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
事件对象
查看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;