A entender a janela.propriedade do evento e sua utilização

Não entendo a motivação atrás da janela.evento ou janela.evento.srcElement. Em que contexto devemos usar isto? O que representa exactamente no DOM?

Author: Calum, 2011-08-03

4 answers

Aqui o que w3school diz sobre event objecto:

Os eventos são acções que podem ser detectadas pelo JavaScript, e o evento o objecto dá informações sobre o evento que ocorreu.

Às vezes queremos executar um JavaScript quando um evento ocorre, tal como quando um usuário clica um botão.

Pode lidar com eventos usando:

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
}
No entanto, o Internet Explorer não passa eventos para o handler. Em vez disso, pode usar a janela.objecto do evento que está a ser actualizado imediatamente após o evento ter sido disparado. Então a maneira crossbrowser de lidar com os Eventos:
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';
}
 20
Author: Molecular Man, 2011-08-03 13:32:44

Não tenho certeza se esta diferença foi alterada em versões mais recentes do navegador, mas basicamente, "no Microsoft event accessing model há uma janela de propriedade especial.evento que contém o último evento que ocorreu."(de referência)

Então, para escrever um controlador de eventos compatível entre navegadores, você precisa fazer algo assim:
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;

Referência: http://www.quirksmode.org/js/events_access.html

 8
Author: potNPan, 2011-08-03 13:39:51
function IndentifyMe(){
 alert("You clicked on " + window.event.srcElement.tagName);
}

<body onclick = "IndentifyMe()">

Tente este código, com muitos elementos na etiqueta corporal, e tente carregar em diferentes elementos

 -1
Author: hungryMind, 2011-08-03 13:23:21

Os Eventos {[3] } são a força vital da interacção do utilizador. Sem Eventos, você não conseguia interagir com a página.

Os manipuladores de eventos são usados para invocar algum JavaScript quando uma determinada acção acontece. Se quiseres. o comportamento a despoletar quando o utilizador mover o seu cursor por cima de um elemento, você irá usar o cursor onmouseover manipulador.

"DOM Scripting: Web Design with JavaScript and The Document Object Model: Second Edition"

 -1
Author: user278064, 2011-08-03 13:28:49