Toon posts:

[js]EventTarget geeft verkeerd object door?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik voeg met javascript een addEventListener aan bepaalde hyperlinks toe. Via het bijbehorende EventTarget object bepaal ik dan de url van de geklikte link (EventTarget.target.href).

Dit werkt prima zolang dit gebeurt voor gewone tekstlinks. Zodra de link echter een plaatje is wordt het plaatje als object meegestuurd (en aan dat plaatje heb ik toch écht geen event gehangen!).

Nu heb ik al verschillende dingen geprobeerd om toch de url te krijgen (originalTarget, etc), maar informatie over dit onderwerp is zeer beperkt (google vind alleen maar code waarin dit gebruikt is, etc).

Is er een manier om in de functie eenvoudig het object te achterhalen waaraan het event gekoppeld is (het 'a' object dus)?

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Als jij een onclick op een a zet krijgen alle childs die ook, dus je kunt checken wat voor type element het event getriggered heeft. Als dat een img is pak je gewoon zijn parent: de a :)

Hou je er trouwens wel rekening mee dat IE geen Target maar srcElement gebruikt :)

[ Voor 20% gewijzigd door André op 13-05-2005 14:38 ]


Verwijderd

Topicstarter
Deze code gebruik ik in een Fx extensie. Ik kan dus met een gerust hart IE vergeten (een heerlijk gevoel overigens :Y) )

Ik probeer nu uit te zoeken hoe ik het beste het type van het element kan bepalen. Ik zou natuurlijk kunnen checken voor EventTarget.target.src, dan weet ik bijna zeker dat het een plaatje is, maar dat is natuurlijk een ranzige oplossing.

Je zou toch bijna zeggen dat er een property moet met het objecttype? Ik kan alleen maar rare IE-properties vinden waar ik niks aan heb.

  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

code:
1
event.target.nodeName;

;)

Om uit te vinden wat in sommige collections zit doe ik altijd dit:

code:
1
2
3
4
z = "";
for (x in event.target)
{ z = z + x + ": " + event.target[x] + " - "; }
alert(z);

[ Voor 69% gewijzigd door André op 13-05-2005 14:56 ]


Verwijderd

Topicstarter
Ha, dat doet het 'm, bedankt!

Die code om collections door te spitten heb ik ook maar even opgeslagen :)

offtopic:
Ik vind het trouwens wel raar dat de nodeName property uppercase teruggeeft, terwijl elementen in lowercase moeten zijn.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op vrijdag 13 mei 2005 @ 15:05:

offtopic:
Ik vind het trouwens wel raar dat de nodeName property uppercase teruggeeft, terwijl elementen in lowercase moeten zijn.
Ehm is dat niet afhankelijk van de dtd die je gebruikt (incl. mime typing)?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

nee, da's afhankelijk van of je x(ht)ml hebt of sgml (html)

in de html dom worden nodeNames altijd uppercase teruggegeven
in xml case sensitive (dus zoals je ze erin hebt gestopt, in het geval van xhtml dus lowercase)

let op dat xhtml geserveerd als text/html gewoon html is en je dus ook uppercase terugkrijgt
Pagina: 1