На моей странице HTML5 у меня есть div с событием mousemove
следующим образом:
$('#canvas').mousemove(function(e){
xpos = e.offsetX;
ypos = e.offsetY;
$('#mouse').html("X : " + xpos + " ; Y : " + ypos);
});
Он отлично работает с Google Chrome. Но в Firefox оба значения дают undefined
. Я проверил его с помощью Firebug, то есть зарегистрировал объект e
для консоли. Обнаружено, что offsetX
и offsetY
undefined
.
Когда я искал в Google, было решение, что я должен использовать layerX
и layerY
, если оба offsetX
и offsetY
являются undefined.
Но от Firebug я не смог его найти. И даже я дал ему попробовать вот так:
xpos = (e.offsetX==undefined)?e.layerX:e.offsetX;
ypos = (e.offsetY==undefined)?e.layerY:e.offsetY;
Но это также дает undefined
как значения.
Я использую самый последний jQuery - v1.8.2. И я тестирую в своем Firefox v14.0.1
Любые идеи или предложения?
ИЗМЕНИТЬ
Благодаря дистрой и vusan за помощь мне. Решение вышеупомянутой проблемы выглядит следующим образом:
Решение
$('#canvas').mousemove(function(e){
$('#cursor').show();
if(e.offsetX==undefined) // this works for Firefox
{
xpos = e.pageX-$('#canvas').offset().left;
ypos = e.pageY-$('#canvas').offset().top;
}
else // works in Google Chrome
{
xpos = e.offsetX;
ypos = e.offsetY;
}
$('#mouse').html("X : " + xpos + " ; Y : " + ypos);
});