私は現在、HTML5ドラッグアンドドロップAPIを使用して、ブラウザの内外へのアイテムのドラッグなどの追加機能を提供するプロジェクトに取り組んでいます。私は現在、Chromeに固有の問題に遭遇しています(それ以外の場合はFirefoxでのみテストされており、期待どおりに機能します)。
問題は、event.dataTransfer.getData(type)
メソッドを使用して、dragstart
イベント以外のイベントでdrop
イベントのデータセットを返すことができないことです。
dragstart
イベント(起動します)にバインドした後、このようにイベントを設定します。
_event.dataTransfer.setData('text/plain', "some string")
_
次に、drop
イベントで、データを正常に取得できます。
_event.dataTransfer.getData('text/plain')
_
ただし、他のイベント(dragover
など)で上記と同じ方法を使用することはできません。 setData()
を呼び出した後(つまり、dragstart
コールバックで)、上記のメソッドを行で使用しようとしても、undefined
が返されます。
したがって、Chromeでは、問題は、getData
in Chromeは、undefined
イベントコールバック内を除いて、常にdrop
を返すことです。(In Firefox、正しいデータを正常に取得できます。)
同じドラッグ要素のdataTransfer
オブジェクトへの参照がある場合、データがドロップされるまでデータを取得できないのはなぜですか?
ただ疑問に思う:
リソース: HTML5ドラッグアンドドロップの仕様。
WebKit、つまりChromeは、getData
を呼び出すことができるタイミングをかなり制限しています。 dragstart
またはdragover
内でそれを行うことは許可されていません。私は これは標準的なバグです だと思います。
参照 この回答 :
データはドロップでのみ利用できます。これはセキュリティ機能です。Webページ上で何かをドラッグしているときにWebサイトがデータを取得する可能性があるためです。