2011-08-03 16 views

Odpowiedz

0
function IndentifyMe(){ 
alert("You clicked on " + window.event.srcElement.tagName); 
} 

<body onclick = "IndentifyMe()"> 

Spróbuj tego kodu, z dużą ilością elementu w tagu ciała i kliknij inny element

0

Imprezy są siłą napędową interakcji użytkownika. Bez zdarzeń, użytkownik nie może wchodzić w interakcje ze stroną.

Program obsługi zdarzeń jest używany do wywoływania niektórych skryptów JavaScript po wykonaniu określonej akcji. Jeśli chcesz, aby pewne zachowanie zostało wywołane, gdy użytkownik przesunie kursor nad elementem, użyjesz obsługi zdarzeń onmouseover .

"DOM Scripting: Projektowanie stron internetowych z JavaScript i dokument Object Model: Second Edition"

15

Oto co w3school says o event obiektu:

wydarzenia są działania, które mogą być wykryte przez JavaScript, a obiekt zdarzenia podaje informacje o zdarzeniu, które miało miejsce.

Czasami chcemy wykonać JavaScript, gdy wystąpi zdarzenie, takie jak , gdy użytkownik kliknie przycisk.

można obsługiwać zdarzenia używając:

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 
} 

Jednak Internet Explorer nie przechodzi do procedury obsługi zdarzenia. Zamiast tego możesz użyć obiektu window.event, który jest aktualizowany natychmiast po uruchomieniu zdarzenia. Więc sposób crossbrowser do obsługi zdarzeń:

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'; 
} 
+5

Oprócz tego wyciągnąć z w3schools, to jest najbardziej przydatna odpowiedź tutaj. +1. – duri

+0

"_'e.target' odnosi się do' node'_ ": To jest złe. 'this' odnosi się do' węzła', podczas gdy 'e.target' może odnosić się do dowolnego elementu potomnego' węzła' w zależności od tego, który z nich został kliknięty i czy zdarzenie jest w bąblach, czy nie itp. – Xufox

+1

Czy to prawda dla wszystkich wersji IE ? Zdaję sobie sprawę, że jest to stare pytanie, po prostu ciekawe ... nie mogłem nic na nim znaleźć – aw04

6

Nie wiem, czy ta różnica została zmieniona w nowszych wersjach przeglądarek, ale w zasadzie, „W modelu korzystającego zdarzeń Microsoft jest window.event specjalna właściwość, która zawiera ostatnią imprezę które odbyło się." (Z odniesieniem)

więc napisać obsługi zdarzeń zgodną różnych przeglądarkach trzeba by zrobić coś takiego:

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; 

referencyjny: http://www.quirksmode.org/js/events_access.html

Powiązane problemy