11

Mozilla Firefox 3.x は、「ondrag」イベントをリッスンするときにバグがあるようです。イベント オブジェクトは、ドラッグされているオブジェクトの位置を報告しません。clientXclientY、およびその他のスクリーン オフセットはすべてゼロに設定されます。

clientXもちろん、ドラッグされて使用されている要素に基づいてプロキシ要素を作成し、その位置をclientY調整したかったので、これは非常に問題があります。

HTML5などの優れた機能があることは知っていsetDragImageますが、ブラウザー間のネイティブ DD に一般的な抽象化を提供したいと考えています。

問題のあるコード:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);

ノート:

この問題は他のイベント ( dragstartdragover)では発生せず、mousemove何かをドラッグしている間はイベントをキャプチャできません。

4

3 に答える 3

17

解決策を見つけました。ドキュメント レベルで「dragover」イベントにリスナーを配置しました。これで、グローバルに共有されたオブジェクトを介して公開できる適切な X および Y プロパティを取得できました。

于 2009-05-23T20:00:51.480 に答える
3

HTML 5 のドラッグ イベントは、今日のブラウザーでは完全には機能しません。ドラッグアンドドロップの状況をシミュレートするには、次を使用する必要があります。

  1. onmousedown イベントを追加して、var を true に設定します。
  2. onmouseup イベントを追加し、var を false に設定します。
  3. onmousemove イベントを追加して、var が true かどうかを確認し、true の場合は座標に従って div を移動します。

これは常に私にとってはうまくいきました。問題が発生した場合は、再度ご連絡ください。いくつかの例を提供できます。

幸運を!

于 2009-05-20T11:14:56.430 に答える
0

HTML5 の setDragImage などの優れた機能があることは知っていますが、ブラウザー間のネイティブ DD に汎用的な抽象化を提供したいと考えています。

しかし、なぜこのようなことをするのでしょうか。JQueryPrototypeなどのクロス ブラウザーのドラッグ アンド ドロップに使用できるライブラリがないのでしょうか。

または、独自の DD ライブラリを実装したい場合は、両方のライブラリがオブジェクト指向のパラダイムに従っているため、それらのメソッドを利用したり拡張したりできます。

これにより、多くの時間を節約できます。

于 2009-05-20T11:35:02.193 に答える