2013-09-27 20 views
25

私はさまざまな要素にイベントをバインドしています.Firefoxを除くすべてのブラウザでイベントをドラッグすると、期待通りに動作します。しかし、Firefoxでは、まったく動作しません。発生する唯一のイベントはdragstartで、他のイベントは発生しません。どうしたの?FirefoxでHTML5のドラッグ&ドロップが動作しないのはなぜですか?

+1

例のコードとFirefoxのバージョンをどうぞ? –

+0

それは同時に答えを掲示することになっていたが、それはしなかった....理由がわからない。 – RandallB

答えて

20

は、そうoriginalEvent部分を削除してテキストに書式を変更(またはIEは問題があった)、それは動作します:

他のイベントで
event.dataTransfer.setData('text', 'anything'); 

を呼び出してください:

event.preventDefault(); 

または、いくつかのイベントでanything.comにジャンプします。

+3

と 'event.dataTransfer.setData( 'text/html'、 'anything') 'とすると、anything.comにジャンプしません – pykiss

+0

FFでドラッグ&ドロップで戦っている人は誰でもこれはおそらくあなたと関連していて、この特定の問題とは関係ありませんが、https:// stackoverflow。com/questions/11656061/event-clientx-showing-as-fire-for-dragend-event –

+0

また、dropイベントハンドラでpreventDefault()を呼び出して、ナビゲートする。 Mozillaがこのひどい実装をしたときに何を考えていたのか分かりません。 –

24

Firefoxでは、ユーザがイベントでdataTransfer.setData関数を実行する必要があります。

function dragstartHandler(event){ 

    event.originalEvent.dataTransfer.setData('text/plain', 'anything'); 

} 
あなたが予想されるのと同じドラッグの

将来のイベントが正しく起動します:次のコードは、あなたの問題を解決する必要があることを意味しますjQueryユーザーの場合

、。明らかに、より有用なデータでsetData引数を置き換えることができます。私はjQueryのを使用していないよ

+1

IEで動作させたい場合は、 'text/plain'の代わりに 'text'を使用してください。 http://stackoverflow.com/questions/12803235/drag-and-drop-not-working-in-ie-javascript-html5 – David

+0

これはうまくいきますが、今日の時点で、MDN DragのドキュメントではまだDragEventにはdataTransferプロパティ。 originalEventを参照する必要はありません。 –

+0

@LexLindsey、originalEventは答えに示されているようにjQueryです。 – swiss196

1

これは、Firefoxで発生するリダイレクトに関するこの質問解決の参考として使用できます。

この問題を解決するには、ドロップ方法のデフォルト動作を防止する必要があります。

function drop(e) { 
    if(e.preventDefault) { e.preventDefault(); } 
    if(e.stopPropagation) { e.stopPropagation(); } 

    //your code here 

    return false; 
} 

私はこの解決策をthis linkから得ました。

1

FFには、オーバフローが自動またはスクロールに設定されている要素に由来する特定のマウスイベントを摂食する際に長年にわたり問題があります。

私の場合は、ドラッグ&ドロップ用のライブラリがよく使用されていましたが、サンプルとFirefoxのすべてのブラウザで完全に動作しました。スクロール要素になし

:これに関連したチケットを掘り後、私は -moz-ユーザー選択設定することで、このチケットhttps://bugzilla.mozilla.org/show_bug.cgi?id=339293

への貢献に対する解決策、私は完全に信用を見つけましたから引っ張られた。それは私の特別な問題を解決しました。

関連する問題