- 締切済み
外でマウスアップした時のイベント
以下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>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 15mm
- ベストアンサー率65% (65/100)
ドラッグ禁止させるなら、 i('o').ondragstart=function(){return false;} でいかがでしょうか。 選択禁止も文字列ドラッグを防ぐのにはいいかもしれません。
- chara0-m
- ベストアンサー率50% (3/6)
すいません。 何度かやっているとなってしまいますね・・・。 No2の回答は、役にたたなそうです。。
お礼
chara0-mさん ご回答ありがとうございます。
- chara0-m
- ベストアンサー率50% (3/6)
>>反転させてドラックの様な動作をした際に禁止のマークが出た後でしょうか。IEで発生します。 これに関しては、divの部分でのドラッグの禁止ぐらいで対応するしか ない気がします。 i('o').onmousemove = function(){ return false; } のような感じではどうでしょうか?
- chara0-m
- ベストアンサー率50% (3/6)
こんな感じでどうでしょうか? <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>
補足
chara0-mさん ご回答ありがとうございます。 概ね良好なのですが、カチカチいじってるとマウスアップしてるのに[down]のままになる事があります。 どのような動作をさせた時に発生するのか断定は難しいのですが、 反転させてドラックの様な動作をした際に禁止のマークが出た後でしょうか。IEで発生します。
お礼
15mmさん ご回答ありがとうございます。 問題事象が解決しました。