私の HTML5 ページには、mousemove
次のようなイベントを含む div があります。
$('#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
、を使用する必要があるという解決策がありました。しかし、Firebug からは、それを見つけることができませんでした。そして、私でさえ次のように試してみました:layerY
offsetX
offsetY
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);
});