在我的 HTML5 页面中,我有一个带有mousemove
事件的 div,如下所示:
$('#canvas').mousemove(function(e){
xpos = e.offsetX;
ypos = e.offsetY;
$('#mouse').html("X : " + xpos + " ; Y : " + ypos);
});
它适用于谷歌浏览器。但在 Firefox 中,两者都给出了 value undefined
。我已经使用 Firebug 进行了检查,即将e
对象记录到控制台。两者offsetX
和offsetY
被发现是undefined
。
当我在谷歌搜索时,有一个解决方案说我应该使用layerX
and layerY
,如果两者offsetX
都offsetY
未定义。但是从 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);
});