HTML5のdrag系イベントで、ドラッグ中の画像上(コンテンツ上)のマウス位置を拾いたい

久々に技術の話。わかりやすい回答がなかったので後の人のために書くよ。


簡単に言えば画像Aをドラッグして画像Bにドラッグオーバーしているとき、マウス位置によってうんたらかんたらするようなコードを書くことになったんだけど、
「マウス位置 javascript」でgoogle先生にお伺い立てても、mousemoveしか出てこなかった。正解はdragイベントでした。


画像Bにオーバーしているときのマウス位置の取得をしたいので、google先生のいうとおり
dragoverと思って実装したんだけど、dragoverではe.pageYができなかった。要素に位置情報なかった。
ただしオーバーしてる画像の位置は$(this).position().topで取得できたので、あとはこれに現在のマウス位置を合わせればできるかなーとmousemoveイベントを入れてマウス位置を取得しようとしたんだが・・・
なんとmousemoveはドラッグの時にはイベントはっせいしなかった。そりゃそうだと思ったが知らなかった・・・
で、散々検索してdragイベントならe.pageYを取れることが判明したのが今。dragenterとかずっと見てたのにdragにたどり着くのに3時間かかった・・・


よって最終的にはこうなった(jqueryなくてもできるけどありの書き方で)

var pageY = 0;
document.addEventListener("drag",function(e){
	pageY = e.pageY;
});
$("#tableBlock li").on('dragover', function() {
	over = "on";
	overY = pageY-$(this).position().top;
	
	//高さ半分以上の位置なら
	if(){・・・
	
	//高さ半分以上の位置なら
	else{・・・

})