2009-08-31 5 views
1

ドラッグスクリプト&ドロップスクリプトをプレーンJavaScriptで実装しています。 1つのことを除いて、すべていいです。たとえば、Firefox(おそらくそこだけではない)では、オブジェクトを2回目にドラッグすると、組み込みのブラウザ機能としてドラッグされています(ドロップの画像をデスクトップに保存すると簡単にドラッグできます)。まあ、この種の私のスクリプトを台無しにする。JavaScriptドラッグ&ドロップのブラウザドラッグを無視/キャンセルする

私はこれが可能であることを知っていますし、以前もやったことがありましたが、それは長い時間のようでした。試行錯誤して動作させたところで、focus()とblur()それは実際に焦点を失うように見えるまでの場所でした。

誰かが私のためにこれをクリアする方法を知っているなら、彼は私の個人的なヒーローだろう。オブジェクトをドラッグするとぼかし()されますか? focus()を別のものにしますか?

ありがとう!

// [OK]を、これに関するコードの一部は、次のようになります。

... 
    this.handle.onmousedown = function(e) 
    { 
     self.startDragging(e); 
    }; 
    this.handle.onmouseup = function(e) 
    { 
     self.stopDragging(e); 
    }; 
    setInterval(function(){self.animate()}, 25); 
... 
startDragging: function(e) 
{ 
    this.dragging = true; 
}, 
stopDragging: function(e) 
{ 
    this.dragging = false; 
}, 
animate: function() 
{ 
    if(this.dragging) 
... 
+0

あなたはあなたのコードを提供できますか? –

+0

あまりにも多く、混乱します。あなたがページに1つのdivを持っていると想像してください。ブラウザでドラッグできないようにしたいのですが... – treznik

答えて

1

私はあなたの質問を誤解しない限り、(event.preventDefaultを試してみてください)。あなたのmousedownイベントリスナーで。ドラッグ&ドロップの実装方法を示すコードスニペットを提供できる場合は、役立ちます。

編集:あなたの実装では、このような何かが動作するはずです:

this.handle.onmousedown = function(e) { 
    if(!e) e = window.event; 
    if(e.preventDefault) e.preventDefault(); 
    else e.returnValue = false; 

    self.startDragging(e); 
}; 

しかし、私の代わりにイベントリスナーを使用することをお勧めします。

+0

うん、実際はうまくいきます!驚くばかり。しかし、これはFirefox専用ですか? – treznik

+0

IEはイベントリスナを少し違った方法で実装していますので、これを考慮する必要があります。私はIEであなたはmousedownイベントでfalseを返すと思います。私は、quirksmode.orgのクロスブラウザーイベントリスナーについて読むことをお勧めします。 – Kevin

関連する問題