[1] HTML のほとんどの要素で用意されている
onmousemove
属性は、
指示装置がある要素の上で
(その要素から出入りせずに) 動かされた時に発生する事象に関する内在事象属性です。
[2] 仕様書:
[3] 内在事象属性は表現と構造の分離の原則に反するので、 好ましくないと考える人もいます。また、 DOM 0 に基づく古い設計です。
代わりに、 script
要素などにより関連付けたスクリプト内で
DOM 2 以上の事象に関するメソッド等が利用できます。
DOM 水準2 や DOM 水準 3 はこの属性に対応する
DOM の事象 mousemove
を用意しています。
[4] この属性の値は %Script
です。 SGML
的には CDATA
です。
自称が発生したときに実行するスクリプトの code
を記述します。スクリプト言語は、
Content-Script-Type
によります。
[5] この属性は省略可能です。
[6] この属性に対応する DOM の事象は mousemove
です。そちらもあわせてごらんください。
[7] 別の要素に移動したときには onmouseout
事象が、別の要素から移動してきたときには omouseover
事象が発生します。
[8] ドラッグ・アンド・ドロップをスクリプトにより実装したい時には、
mousemove
と mousedown
,
mouseup
を組み合わせると便利です。
[9]
ニンテンドーDSiブラウザーでは mousemove
が発火されるだけでかなり処理が重たくなります。中の処理を減らしたりしてもあまり変わらない。
position: absolute
にすると極端に重さが増します。
[10] ニンテンドーDSiブラウザーは viewport
を入れて高さ172px以下にすればマウスイベントが発生します。それより長くなるとスクロールになります。 position:absolute
なら175px
までいけます。
[11] 3DS では普通にペンでなぞっても mousemove が発生しないので、ありがちな
canvas
を使ったお絵かきは実現不可能です。ペンのタッチイベントは、
... の2通りのケースで取得できます。
後者で従来スタイルのお絵かきが実現できそうに思えますが、何か描くために毎回1秒くらい長押ししないといけないのは意外と辛く、文字や本格的な絵を描く用途には向きません。
mousedown
はドラッグしたい要素でだけ listen しておけばいいのですが、mousemove
やmouseup
はドラッグ中にマウス・ポインターが要素の箱から外れることを考慮してドラッグ・アンド・ドロップ可能な領域全体で listen しておいたほうがいいです。