Autor Zpráva
Johnik
Profil
function Loader()
{
    this.load = function()
    {
        var image = new Image();
            image.onload = this.image_completeHandler;
            //image.addEventListener("load", this.image_completeHandler);
            image.src = "...";
        ...
    }

    this.image_completeHandler = function(event)
    {
        console.log("complete");
    }
}

Ve výše uvedeném kódu mi jde o řádek s image.onload = this.image_completeHandler; (případně image.addEventListener("load", this.image_completeHandler);), což by podle mého očekávání mělo po načtení obrázku vyvolat přiřazenou funkci v tom objektu. Nicméně se tak nestane a jak jsem se dočetl, tak this na pravé straně již neukazuje na objekt, ale na objekt toho obrázku (Image). Lze nějak udělat, aby handlerem mohla být funkce na objektu, který Image vytváří? Aby this nezměnilo kontext?

Děkuji za odpovědi.
Chamurappi
Profil
Reaguji na Johnika:
this na pravé straně již neukazuje na objekt, ale na objekt toho obrázku (Image)
Není pravda, this se v průběhu funkce nikdy nemění. Teprve uvnitř image_completeHandler bude this onen obrázek, protože tato funkce bude zavolána v kontextu obrázku — a tam jde problém vyřešit tím, že si referenci na původní this uložíš do nějaké proměnné.

Pokud ti uvedený kód nefunguje, buď se snažíš načítat něco, co není obrázkem, nebo máš chybu v něčem, cos neukázal.

případně image.addEventListener
Nefunguje ve všech prohlížečích (a je to zbytečně ukecané).

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: