Понимание свойства window.event и его использования - PullRequest
9 голосов
/ 03 августа 2011

Я не понимаю мотивации window.event или window.event.srcElement. В каком контексте следует использовать это? Что именно это представляет в DOM?

Ответы [ 4 ]

19 голосов
/ 03 августа 2011

Вот что w3school говорит об event объекте:

События - это действия, которые могут быть обнаружены JavaScript, а объект события предоставляет информацию о произошедшем событии..

Иногда мы хотим выполнить JavaScript, когда происходит событие, например, когда пользователь нажимает кнопку.

Вы можете обрабатывать события, используя:

node.onclick = function(e) {
  // here you can handle event. e is an object.
  // It has some usefull properties like target. e.target refers to node
}

Однако Internet Explorer не передает событие обработчику.Вместо этого вы можете использовать объект window.event, который обновляется сразу после возникновения события.Итак, кроссбраузерный способ обработки событий:

node.onclick = function(e) {
  e = e || window.event;
  // also there is no e.target property in IE.
  // instead IE uses window.event.srcElement
  var target = e.target || e.srcElement;
  // Now target refers to node. And you can, for example, modify node:
  target.style.backgroundColor = '#f00';
}
6 голосов
/ 03 августа 2011

Не уверен, изменилась ли эта разница в более новых версиях браузера, но в основном: «В модели доступа к событиям Microsoft есть специальное свойство window.event, которое содержит последнее событие, которое имело место». (из справки)

Итак, чтобы написать обработчик событий, совместимый с браузерами, вам нужно сделать что-то вроде этого:

function doSomething(e) {
    if(!e) {
        var e = window.event;
    }
    var ele = e.target || e.srcElement;
    // get the clicked element
    // srcElement for IE, target for others
}
element.onclick = doSomething;

Ссылка: http://www.quirksmode.org/js/events_access.html

0 голосов
/ 03 августа 2011

События являются источником жизненной силы взаимодействия с пользователем.Без событий вы не могли бы взаимодействовать со страницей.

Обработчики событий используются для вызова некоторого JavaScript, когда происходит определенное действие.Если вы хотите, чтобы какое-либо поведение запускалось при наведении курсора на элемент, вы используете обработчик события onmouseover.

"Сценарии DOM: веб-дизайн с JavaScript и объектная модель документа: второе издание«

0 голосов
/ 03 августа 2011
function IndentifyMe(){
 alert("You clicked on " + window.event.srcElement.tagName);
}

<body onclick = "IndentifyMe()">

Попробуйте этот код с большим количеством элементов в теге body и попробуйте щелкнуть другой элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...