Сегодня многие люди делают это с явным закрытием:
var myobject= new MyObject();
element.onmousemove= function() {
myobject.onMouseMove();
};
Но в будущем вы сделаете это с помощью метода пятого издания ECMAScript function.bind
:
element.onmousemove= myobject.onMouseMove.bind(myobject);
(Все дополнительные аргументы, переданные function.bind
, добавляются к списку аргументов целевой функции при вызове.)
Пока все браузеры не поддерживают function.bind
изначально, вы можете взломать поддержку в себе, используя прототипы и замыкания. См. этот ответ для примера реализации.
document.body.scrollLeft
Это только document.body
, если вы находитесь в режиме IE Quirks. Вы не хотите быть в Причудливом Режиме. С типом документа Standards Mode вместо document.documentElement
. Поэтому, если вам нужно поддерживать разные страницы, которые могут использовать любой из этих режимов, или вам по-прежнему нужна поддержка IE5 (будем надеяться, что нет):
var viewport= document.compatMode==='CSS1Compat'? document.documentElement : document.body;
return {x: ev.clientX+viewport.scrollLeft, y: ev.clientY+viewport.scrollTop};