HTML5 avec jQuery - e.offsetX est pas défini dans Firefox

Dans ma HTML5 page, j'ai un div avec mousemove événement comme suit:

$('#canvas').mousemove(function(e){
    xpos = e.offsetX;
    ypos = e.offsetY;
    $('#mouse').html("X : " + xpos + " ; Y : " + ypos);
});

Il fonctionne très bien avec Google Chrome. Mais dans Firefox, les deux sont de donner la valeur undefined. J'ai vérifié en utilisant Firebug, c'est connecté la e objet de la console. Les deux offsetX et offsetY sont undefined.

Lorsque j'ai cherché dans Google, il y avait une solution en disant que je devrais utiliser layerX et layerY, si les deux offsetX et offsetY ne sont pas définis.
Mais à partir de Firebug, je n'étais pas capable de le trouver. Et j'avais moi-même donné un essai comme ceci:

xpos = (e.offsetX==undefined)?e.layerX:e.offsetX;
ypos = (e.offsetY==undefined)?e.layerY:e.offsetY;

Mais c'est aussi donner undefined en tant que valeurs.

Je suis en utilisant la plus récente de jQuery - v1.8.2. Et je suis en train de tester dans mon Firefox v14.0.1

Des idées ou des suggestions?


MODIFIER

Grâce à dystroy et vusan pour m'aider. La solution à ce problème est comme suit:

SOLUTION

$('#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);
});
  • pas sûr de ce que la version de Google Chrome que vous utilisez, mais il semble donner un objet non défini dans la version Chrome v26 aussi.
  • Je suis en utilisant google Chrome Version 26.0.1410.64 m. Et il fonctionne très bien. Voir en direct: jsfiddle.net/EEftW
  • Bien sûr, j'ai aspiré dans. À l'aide de la machine et StronglyTyped jQuery fichiers de définition, j'ai été amené à croire OffsetX/Y avait des parties de jquery. Je n'avais jamais réalisé qu'ils étaient en option et uniquement inclus dans certains navigateurs. Merci pour votre post, vous m'avez aidé à trouver le problème dans un immense gâchis de code.
  • Ne fonctionne pas pour moi dans Firefox
  • Cela ne fonctionne pas pour moi dans Firefox 30 - pageX et pageY sont toujours à 0
  • Wow. Un peu surpris de voir que jQuery n'est pas régulariser cette!