PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : attribut von eventhandler


Indyk
23.11.2006, 10:51:58
Huhu,
folgende frage, wie komme ich an attribute von eventHandler ran?
es werden ja "angeblich" z.b bei onMouseOver() folgendes mitgeschickt:


type
Typ des Ereignisses

target
Objekt zu dem das Ereignis ursprünglich gesendet wurde

eventPhase
Phase, in der das Ereignis bearbeitet wird: AT_TARGET, BUBBLING_PHASE, CAPTURING_PHASE

bubbles
true, wenn das Ereignis nach oben steigen kann

cancelable
true, wenn die Aktion des Ereignis verhindert werden kann

timeStamp
Zeit in Millisekunden, zu der das Ereignis eingetreten ist

screenX, screenY, clientX, clientY
Position des Mauszeigers zum Zeitpunkt des Ereignisses

altKey, ctrlKey, shiftKey, metaKey
zusätzlich gedrückte Tasten

button
die Maustaste, die das Ereignis auslöst


nun aber wie spreche ich es an?

meine quelle:
hier nachlesen (http://www.mediaevent.de/javascript/onmousemove.html)

Andes
23.11.2006, 12:07:23
Der IE und Gecko-Browser unterscheiden sich bei den Objekten des Handler teilweise extrem. Um zum Beispiel, zu ermitteln auf welches Element geklickt wurde. Muss man dies beim IE mit srcElement und bei Gecko-Browsern mit target auslesen.
Um alle Objekte es Handler zu erhalten kannst du die mit einer 'for in' Schleife auslesen.

Hier ein Beispiel wie man den Element-Namen, auf welches geklickt wurde, ermitteln kann.


function TestFun(e) {
if(!document.all) var objekt = e.target.id; //für Gecko-Browser
else var objekt = event.srcElement.id //IE

alert(objekt);
}

document.onclick = TestFun;

<a href="#" id="elm">Test</a>


Bei Gecko-Browsern wird das Ereignis in dem Parameter 'e' übergeben und kann somit ausgelesen werden. Beim IE ist das Ereignis über 'event' verfügbar.

Indyk
23.11.2006, 13:12:52
mhm
man kann also die attribute beim event selbst nicht abfragen?
also wenn ich jetzt

<div id="test" onMouseOver="muh()">
</div>

und

function muh(e){
var objekt = e.target.id;
alert(objekt);
}


warum funktioniert da sso nicht?
und wird bei geckos "e" immer übergeben?
oder nur wenn ich keine parameter angebe?

Andes
23.11.2006, 15:39:54
Doch, auch wenn du den Event-Handler direkt im Element definierst kannst du diese Eigenschaften auslesen. Zusätzlich können auch noch weitere Parameter an die Funktion übergeben werden.
Dann wird es aber etwas anders definiert. Allerdings ist bei dem Beispiel, dass Auslesen der 'id' über diese Methode quatsch. Da kann man sie auch direkt übergeben.


function TestFun(e, t) {
if(!document.all) var objekt = e.target.id; //für Gecko-Browser
else var objekt = e.srcElement.id //IE

alert(objekt+" / "+t+" / "+e.clientX); //id / href / Mausposition X
}

<a href="#" id="elm" onClick="TestFun(event, this.href)">Test</a>


Bei dem ersten Beispiel wird bei Gecko-Browsern der Event als Parameter übergeben und ist mit 'e' (oder andere Bezeichnung) verfügbar. Der IE übergibt den Event nicht als Parameter sondern ist über das window Objekt verfügbar.