• 締切済み

外でマウスアップした時のイベント

以下htmlは[up]の上でマウスダウンすると[down]に、[down]の上でマウスアップすると[up]になります。 しかし、[up]の上でマウスダウンして、[down]に変わった後[down]の外でマウスアップすると[down]のままになってしまいます。 このように、外でマウスアップした場合でも[up]の表示としたいのですが、なにかよい方法はないでしょうか? FlashのAcitoscriptでいうところのreleaseOutsideを検知したいです。 <html> <head> <script> window.onload = function(){ var Drag = 0; i = function(id){ return document.getElementById(id) }; i('o').onmousedown = function(){i('o').innerHTML='[down]'; } i('o').onmouseup = function(){ i('o').innerHTML='[up]'; } } </script> <div id="o">[up]</div> </body> </html>

みんなの回答

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.4

ドラッグ禁止させるなら、 i('o').ondragstart=function(){return false;} でいかがでしょうか。 選択禁止も文字列ドラッグを防ぐのにはいいかもしれません。

kingfruits
質問者

お礼

15mmさん ご回答ありがとうございます。 問題事象が解決しました。

  • chara0-m
  • ベストアンサー率50% (3/6)
回答No.3

すいません。 何度かやっているとなってしまいますね・・・。 No2の回答は、役にたたなそうです。。

kingfruits
質問者

お礼

chara0-mさん ご回答ありがとうございます。

  • chara0-m
  • ベストアンサー率50% (3/6)
回答No.2

>>反転させてドラックの様な動作をした際に禁止のマークが出た後でしょうか。IEで発生します。 これに関しては、divの部分でのドラッグの禁止ぐらいで対応するしか ない気がします。 i('o').onmousemove = function(){ return false; } のような感じではどうでしょうか?

  • chara0-m
  • ベストアンサー率50% (3/6)
回答No.1

こんな感じでどうでしょうか? <html> <head> <script> window.onload = function(){ var flag = false; i = function(id){ return document.getElementById(id) }; i('o').onmousedown = function(){ flag = true; i('o').innerHTML='[down]'; }; document.onmouseup = function(){ if( flag == false ) return; flag = false; i('o').innerHTML='[up]'; }; } </script> <div id="o">[up]</div> </body> </html>

kingfruits
質問者

補足

chara0-mさん ご回答ありがとうございます。 概ね良好なのですが、カチカチいじってるとマウスアップしてるのに[down]のままになる事があります。 どのような動作をさせた時に発生するのか断定は難しいのですが、 反転させてドラックの様な動作をした際に禁止のマークが出た後でしょうか。IEで発生します。

関連するQ&A