在我的HTML5页面中,我有一个带有mousemove
事件的div,如下所示:
$('#canvas').mousemove(function(e){
xpos = e.offsetX;
ypos = e.offsetY;
$('#mouse').html("X : " + xpos + " ; Y : " + ypos);
});
在谷歌浏览器中它工作得很好。但在火狐浏览器中,两者都返回值为undefined
。我通过使用Firebug进行了检查,即将e
对象记录到控制台中。发现offsetX
和offsetY
都是undefined
。
当我在谷歌中搜索时,有一个解决方案说如果offsetX
和offsetY
都未定义,则应该使用layerX
和layerY
。但是从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。
有什么想法或建议吗?
编辑
感谢dystroy和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);
});