2

私は、Webアプリケーションを開発中です。ユーザーは、jQuery UIのSortableおよびDroppableウィジェットを使用して、画面上の項目の並べ替えや削除を行うことができます。最初は、アイテムを削除するには1つの方法しかありませんでした。そのアイテムをゴミ箱アイコンのある領域にドラッグしてドロップします。ここでは、アイテムを画面の端からドラッグして削除し、マウスボタンを離してアイテムを削除するオプションを追加します。Firefoxのサイドバーまたは開発者パネル上でマウスボタンが離されたときに、ドラッグ可能な要素またはソート可能な要素をjQuery UIに「放置する」ようにするにはどうすればよいですか?

この新しい機能(オフスクリーンでドラッグして削除)は、私が予想していたよりもセットアップが少し複雑になっていますが、最終的にはほとんどの問題を解決しました。 Firefoxでは、メインのブラウザウィンドウの他にブラウザに他の「パネル」が存在するとドラッグアンドドロップ機能に問題があります。たとえば、ブックマークのサイドバー(通常はドッキングしています)左に)、開発者ツール(通常は右または下にドッキングさせておく)を使用します。ソート可能な要素をピックアップしてこれらのパネルの1つの後ろにドラッグし、マウスボタンを放すと、jQuery UIは要素を「ホールド」し続けます(つまり、ドラッグを続けます)。 jQuery UI Sortableページへ

  1. 移動:問題を再現する方法

  2. [control-B]を押すと、Firefoxのブックマークサイドバーが表示されます。
  3. ソート可能なアイテムの1つを取得し、ブックマークのサイドバーにドラッグして、マウスボタンを放します。
  4. アイテムの元になったボックスにマウスを戻します。マウスボタンを押さなくても、ドラッグされているかのようにアイテムがマウスに固執していることがわかります。

望ましい行動:は、私はあなたがブラウザの外に完全にポインタを移動し、マウスボタンを離したときにそれと同じように、ソート可能なウィジェットがソート可能なアイテムをリリースしたいです。

この問題はFirefoxに特有であることに注意してください。 (私はFirefox 51.0.1を実行しています。)Google Chromeには同じ問題はありません。 (Google Chromeのデベロッパーツールを下または右にドッキングすると、ソート可能なアイテムをデベロッパーツールエリアから解放できます)、IE、Safariなどでテストしていませんブラウザはまだありません。

ご協力いただきありがとうございます。

答えて

0

私は数年前にこの問題に遭遇しました。私はそれが身体の外に出た場合、カーソルを強制的に解放していました。ここで

は、ドラッグ可能のためのソリューションです:ここで

var flag=true; 
start: function(event, ui){ 
    if(flag){ 
     flag = false; 
     $('body').one("mouseleave", function(){ 
      $('body').one("mouseup", function(){ 
       flag = true; //event occured, rebind 
       //do your stuff 
       }); 
      }); 
    } 
    else{ 
     flag = false; 
    } 
} 

question

+0

へのリンクになって申し訳ありませんが、私は希望の動作を言葉で表現方法で明らかにされていないかもしれません。ユーザーがソート可能な項目を範囲外の領域にドラッグすると、ソート可能な項目がすぐに削除されることは望ましくありません。ユーザーがそれを範囲外の領域にドラッグしてマウスボタンを離した場合にのみ削除されるようにします。それは理にかなっていますか? –

+0

@DanRobinson Oh。私はいくつかの変更を加えました。私は現時点でそれをテストすることはできませんが、正常に動作するはずです。それがどうなるか教えてください。 –

+0

Mandeep、私はあなたの修正された解決策を働かせることができません( "one"から "on"への両方のケースを変更した後でさえ、私はそれが誤字であると仮定します)。マウスアップイベントは、ポインタがFirefoxの他の「パネル」(ブックマークや開発者ツール)の上にある場合には登録されないようです。この[JSFiddle](https://jsfiddle.net/Lypodkyp)にコードを追加しようとしますか?このようにテストすることで私の唯一の懸念は、JSFiddleが方程式にさらに多くの変数を導入する可能性があることです。 –

関連する問題