X

曜彤.手记

随记,关于互联网技术、产品与创业

event.target 与 event.srcElement

window.event 是标准的 window 对象,它包含着事件发生时的状态,所以只在事件的发生过程中才会起作用。而在 window.event 对象中有一个名为 srcElement 的属性,代表着事件发生的源,即代表着事件发生时的 DOM 对象。而 target 属性是从哪里来的呢?其实,srcElement 是 IE 浏览器中的原生属性,而 target 则是 Firefox 浏览器中的原生属性,两者的功能基本上是一样的。但是,在 IE 中却没有 target 属性,同样在 Firefox 中却没有 srcElement 属性。

在现在这个浏览器种类越来越多的时代,如何对这些对象和属性、方法进行统一,一直是一个让人头疼的问题。window.evnet 在前端开发中是一个经常使用的对象,它对于通过事件发生的相对位置来寻找元素有着很重要的作用,但属性名的不统一让前端开发变得越来越棘手。

所以为了使前端开发中的 window.evnet.target 属性和 window.evnet.srcElement 属性达到统一,我们可以在使用前定义一个可以统一获得此属性的函数,在函数中“和谐”掉多浏览器带来的差异化问题。示例代码如下:

function getEventObj() {
  obj = event.srcElement ? event.srcElement : event.target;
  return obj;
}

这样便可以在使用 srcElementtarget 属性之前通过函数进行自动选择,以便解决多浏览器带来的兼容性问题。




评论 | Comments


Loading ...