Események és closure
(ha jól tudom így hívják angolul a szerkezetet)
Készítettem egy függvényt, amit osztályként használnék, A függvény példányonként egy képet kezelne, ennek a mousemove eseményével játszanék. Egy rövid kód:Szeretnék egy általános mousemove eseményt, ami a függvényen belül definált tulajdonságok alapján csinál valamit. Ha így készítem el:akkor a this a kép objektumra fog hivatkozni, a this.valtozo pedig érvénytelen lesz. Ha használom a closure szerkezetet (hogy hívják ezt magyarul?) így:akkor a t változó megkapja az objektumot, a visszaadott függvény pedig azt a t-n keresztül látni fogja. Ezzel kb megoldottam minden eseménykezelést az objektumjaimban, csakhogy! Ha én szeretném az eventet megkapni, akkor bizony sírógörcsöt kapok az Internet Explorer mellett.
Kis módosítás után:Működik minden normális böngészőben. IE6-7 alatt nem. 8 alatt nem tudtam még nézni. Esetleg tudtok valami megoldást erre?
■ Készítettem egy függvényt, amit osztályként használnék, A függvény példányonként egy képet kezelne, ennek a mousemove eseményével játszanék. Egy rövid kód:
function Kep(src) {
this.kep = document.createElement('img');
this.valtozo = 6;
// ...
}
var k = new Kep('jojo.png');
this.kep.onmousemove = function() {alert(this.valtozo);}
this.kep.onmousemove = (function(t){return function(){ alert(t.valtozo()}})(this);
Kis módosítás után:
this.kep.onmousemove = (function(t){return function(evt){ alert(evt.clientX); }})(this);
Nem szükséges