Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чем отличается e.target от e.srcElement? (https://javascript.ru/forum/misc/50986-chem-otlichaetsya-e-target-ot-e-srcelement.html)

terminator-101 20.10.2014 06:16

Чем отличается e.target от e.srcElement?
 
В примере ниже вроде ведут одинаково
<html>
<head>
<title> test </title>

</head>
   <body>
<div id="parent">parent<div id="child">child<div id="last_child">last child</div></div></div>
  <script>

parent=document.querySelector("#parent")
parent.onclick=function(e){
   alert([e.target.id, e.srcElement.id])
}

  </script>
 </body>
</html>

В чем разница?

danik.js 20.10.2014 06:34

В Firefox нет e.srcElement

event.srcElement придумали в IE. В других браузерах и новых IE это event.target. Хром реализовал оба свойства, ради совместимости.

terminator-101 20.10.2014 06:37

Спасибо, все ясно.

tsigel 20.10.2014 06:39

Кроссбраузерная запись:
function (event) {
    var event = event || window.event;
    var target = event.target || event.srcElement;
  }

danik.js 20.10.2014 07:01

tsigel, зачем создавать глобальную переменную target? Кроме того, этот код не будет работать в 'use strict'.

tsigel 20.10.2014 07:03

danik.js,
Поправил. Не за чем, описался

terminator-101 20.10.2014 07:05

Цитата:

Сообщение от danik.js
зачем создавать глобальную переменную target? Кроме того, этот код не будет работать в 'use strict'.

А так?
f=function (event) {
    var event = event || window.event;
    var target = event.target || event.srcElement;
  }

tsigel 20.10.2014 07:13

terminator-101,
Так будет. В режиме 'use strict' нельзя объявлять переменные без 'var' и многие другие строгости добавляются.

только
var f = ...

danik.js 20.10.2014 08:15

Можно просто юзать полифил отсюда:
https://developer.mozilla.org/en-US/...#Compatibility

и забыть про IE


Часовой пояс GMT +3, время: 05:35.