Autor Zpráva
__Martin
Profil *
Ahoj,
zkouším teď framework mootools a není mi jasný zápis uvedený v příkladu http://docs.mootools.net/Element/Element-Event.js#Event.stop

Event.keys.whatever = 80;
$(myelement).addEvent(keydown, function(event){
    event = new Event(event);
    if (event.key == 'whatever') console.log(whatever key clicked).
});


při vytvaření instance třídy Event - předávám nějaký parametr "event", co to prosím je? Vůbec mi to není jasné. Díky moc
centi
Profil
Druhý parameter funkcie addEvent je tzv. event handler. Teda metóda, ktorá bude obsluhovať udalosť, ktorá nastane pri stlačení klávesy. Takáto metóda (handler) má automaticky ako prvý parameter predaný objekt "event", v ktorom sú dostupné všetky údaje o vzniknutej udalosti (klávesa ktorú uživateľ stlačil, element, na ktorom udalosť vznikla a pod). Ten predávaný objekt si môžeš pomenovať akokoľvek. Zvykom je používať názvy ako "event", "evt", "e", napr. function(evt)...

No a v ďalšom zápise proste už len do Mootools triedy Event túto udalosť predáš ako parameter. Mootools tento predávaný event objekt asi ešte nejak spracúva, preto ten new Event.
ah01
Profil
Viděl bych to tak, že třída Event je wrapper nad objektem event, který ti vrací při události prohlížeč. Ty se pak nemusíš zabývat tím, jak co vrací který prohlížeč. Co jsem koukal, tak můžeš používat metodu funkce bindWithEvent. Pak dostaneš v handleru události rovnou instanci třídy Event.

PS: koukám že centi byl rychlejší, ale třeba ho doplním.
__Martin
Profil *
Děkuji Vám obou. Chápu z toho všecho tak 90%. Ještě se zeptám pro upřesnění, ten objekt "event" předaný jako parametr metody obsahuje tedy údaje popsané výše. Ty údaje tam doplní prohlížeč?
__Martin
Profil *
už to tomu asi rozumim : ) ty údaje tam doplní funkce addEvent, je to tak?
__Martin
Profil *
Zkusil jsem si to na příkladu a řekl bych, že je to asi něco podobného jako:

window.onload = function() {
	document.getElementById('odstavec').onclick = function(event) {
		alert(event);
	}
}
<p id="odstavec">Text</p>
centi
Profil
už to tomu asi rozumim : ) ty údaje tam doplní funkce addEvent, je to tak?
Nie, doplní ich tam prehliadač. Ostatne to ilustruje i tvoj nasledovný príklad, kde žiadna mootools funkcia nie je :)

Btw doporučujem si nainštalovať do Firefoxu doplnok Firebug a tvoj príklad si upraviť tak, že namiesto alert(event); použiješ console.log(event); Vo Firebugu v záložke Cosnole potom uvidíš všetko, čo obsahuje tento konkrétny objekt event (po kliknutí na jeho záznam v Console), ktorý si vytvoril kliknutím na "odstavec".
__Martin
Profil *
centi
Díky moc, firebud nainstalovaný mám, jen jsem ho deaktivoval. Vyzkouším to všechno

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