Autor Zpráva
Scorpio1337
Profil
Dobrý den.
Jak se dá udělat v JS událost, když potřebuji při vytvoření objektu připojit metodu při nějakém eventu?
Něco jako

window.load = function () {
alert("metoda");
}

Tak jak se dá udělat objekt s podobným nadefinováním metody a poté tu událost zavolat.

Děkuji za odpověď.
Witiko
Profil
window.onload = f;
window.attachEvent("onload", f); // MSIE
window.addEventListener("load", f, false);
Scorpio1337
Profil
Ale co když chci vytvořit svůj vlastní event. Například v objektu User zavolám metodu přihlášení a když se přihlásí, zavolá se událost přihlášen, kterou definuju předtím. Takže by to vypadalo nějak takhle

User.Prihlasen = function () { alert("Přihlášen"); }
User.Prihlasit();

A jak tedy vytvořit tu událost do které budu moct definovat tu anonymní metodu a jak ji poté zavolat v metodě Prihlasit?
Witiko
Profil
Nějak nechápu zadání.

var User = {
  Prihlasen: function() {
    alert("Přihlášen");
  },
  Prihlasit: function() {
    // Přihlášení
    User.Prihlasen();
  }
};
Scorpio1337
Profil
Chci vytvořit objekt, který pak budu používat v různých částech webu a vždy potřebuju, aby se při přihlášení zavolala jiná metoda, kterou budu definovat až na místě. Takže v jednom souboru bude
var User = {
  Prihlasit: function () {
    //Tady se po přihlášení zavolá událost Prihlasen
  }
}


A jakmile tento soubor nahraju na potřebné místo, tak teprv definuju funkci, která se zavolá po události Prihlasen
var U = new User();
U.Prihlasen = function() { alert("Přihláše"); }
U.Prihlasit();


A to právě nevím jak udělat. Abych mohl přidat tu metodu k Prihlasen a poté ji zavolat.
_es
Profil
Scorpio1337:
Nejako ti nie je rozumieť, čo vlastne chceš, na čo to komplikuješ nejakými objektmi a keď už, tak si to aspoň poriadne naštuduj. Takto si z toho spravíš len chaos.
Možno niečo takéto?:
var u = new User();
u.prihlasit = function(){nejaký kód; this.prihlasen();};
u.prihlasen = function(){alert("Přihlášen");};
u.prihlasit();
Prípadne ešte využiť prototyp.

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: