Autor Zpráva
Dundun
Profil *
Zdravím, zajímalo by mě jak z IE vydoluju event... u firefoxu můžu normálně použít event.něco, ale aby to jelo v ie, musím udělat něco jako

function test(e, bla)
{}

teď ale nechápu, kde se tam to e veme... protože tu funkci pak musím spouštět pomocí např test("text text") takže se naplní ta proměnná bla, ale jak mám korektně naplnit ten parametr "e" eventem pro IE ?

díky
Chamurappi
Profil
Reaguji na Dunduna:
u firefoxu můžu normálně použít event.něco, ale aby to jelo v ie, musím udělat
Naopak. V Exploreru je objekt event globální, v Mozille je předávaný v argumentu. (V Opeře obojí.)

teď ale nechápu, kde se tam to e veme
Pokud přiřazuješ skriptem funkci k události (tj. něco.onudálost = mojeFunkce;), tak se o zavolání stará prohlížeč a Mozilla ti při něm pošle jako první argument event.
Pokud voláš funkci z HTML atributu (tj. onudálost="mojeFunkce()"), v něm je k dispozici objekt jménem event (v Mozille jako lokální proměnná, v Exploreru globální) a ten si můžeš pohodlně předat jako argument do jakékoliv své funkce.
Dundun
Profil *
Snažím se předat firefoxu event takhle
onclick = function(){hk(event, true)};
To ale nefunguje, funguje jen
onclick = function(){hk(true)};
To ale zase nepředávám event
Witiko
Profil
Dundun

Představ si prohlížeč, definuješ mu:

onclick = function(){hk(event, true)}

Prohlížeč zavolá danou anonymní funkci a protože nemá definované žádné argumenty, nemůže jí (celkem logicky) předat odkaz na daný Event objekt v argumentu jménem event. V tomto případě je jediný způsob vydolování předaného argumentu (odkazu na objekt Event) tento:

onclick = function(){hk(arguments[0], true)}

Prohlížeč se ti pokouší předat odkaz na Event objekt jako první argument. Nějak takhle:

element.onclick(Event objekt);

Pakliže jej chceš mít v lokální proměnné / argumentu jménem event, pak budeš muset anonymní funkci nastavit první argument jménem event:

onclick = function(event){hk(event, true)}
onclick = function(foobar){hk(foobar, true)}
onclick = function(window){hk(window, true)} - i tohle funguje, argument o stejném názvu jako globální proměnná ji po dobu trvání funkce zastupuje.
...

Mírně matoucí může být fakt, že odkaz na event je předáván funkci jako argument jménem event, pokud definuješ daný onxxx event jako řetězec a konstrukci funkce necháš na prohlížeči.

<image onload="alert(event.keyCode);">
si prohlížeč interpretuje jako
element.onload = function(event) {alert(event.keyCode);}

Mohl bych jednoduše napsat řešení, ale myslím, že pochopit logiku věci je lepší.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0