Ho notato che la funzione che ti ho passato non si applica bene agli eventi, quindi ho preso spunto da MooTools e ne scritta un'altra (ovviamente, non devi importare MooTools basta che copi le funzioni).
Ti lascio comunque il bind perché secondo me ti può servire.
codice:
Function.prototype.bind = function (obj) {
var fn = this;
return function () {
var args = [this];
for (var i = 0, ix = arguments.length; i < ix; i++) {
args.push(arguments[i]);
}
return fn.apply(obj, args);
};
};
Function.prototype.bindWithEvent = function (obj) {
var fn = this;
return function (event) {
var args = [event || window.event, this];
for (var i = 0, ix = arguments.length; i < ix; i++) {
args.push(arguments[i]);
}
return fn.apply(obj, args);
};
};
Il tuo codice diventa poi:
codice:
this.domElement.onmousemove=function(event){
//Offset in pixel del canvas rispetto all'angoli in alto a sx della pagina TODO considerare l'albero completo di oggetti parent
if(event.pageX){
var canvasOffset=new Array(this.domElement.parentNode.offsetLeft,this.domElement.parentNode.offsetTop);
var mousePos=new Array(event.pageX-canvasOffset[0],event.pageY-canvasOffset[1]);
if(this.tileMap!=null)
alert(mousePos[0]+' '+mousePos[1]);
else
alert('no tilemap loaded');
}
//else TODO implementare compatibilit‡ con IE7+
}.bindWithEvent(this);
P.S: credo che così funzioni anche su IE