2012-03-02 8 views
23

私は現在、HTML5ドラッグアンドドロップAPIを使用して、ブラウザ内外の項目をドラッグするなどの追加機能を提供するプロジェクトで作業しています。私は現在、Chromeに固有の問題に遭遇しています(そうでなければ、期待通りに動作するFirefoxでのみテストされています)。HTML5ドラッグアンドドロップgetData()はChromeのドロップイベントでのみ機能しますか?

問題は、私はdropイベント以外のすべてのイベントにdragstartイベントに設定データを返すためにevent.dataTransfer.getData(type)メソッドを使用することができないということです。

私は(火DOES)dragstartイベントに結合した後、そのようなイベントを設定します。

event.dataTransfer.setData('text/plain', "some string") 

次にdropイベントで、私はデータの罰金を得ることができます。

event.dataTransfer.getData('text/plain') 

は、しかし、私は(例えばdragoverのような)他のイベントに上記と同様の方法を使用することはできません。上記のメソッドをsetData()(つまり、dragstartコールバック)を呼び出した後で使用しても、それはまだundefinedを返します。

クロムでは、イベントコールバックを除き、クロムのは常にundefinedを返します。

同じドラッグ要素のdataTransferオブジェクトへの参照がある場合は、データがドロップされるまでデータを取得できないのはなぜですか?(Firefoxでは、正常にデータを取得できます)

ただ不思議:

  • は誰もが前にクロームと、このトラブルがありましたか?
  • どのような回避策がありますか?
  • または、Chromeで修正する必要がありますか?

資源: Specification for HTML5 drag and drop.

+0

[このバグレポート](http://code.google.com/p/chromium/issues/detail?id=94023)は関連しているようです。 – pimvdb

+0

[HTML5 DnD dataTransfer setDataまたはgetDataがFirefox以外のすべてのブラウザで動作しない可能性があります](http://stackoverflow.com/questions/11927309/html5-dnd-datatransfer-setdata-or-getdata-not-working-in-ブラウザ以外のすべてのブラウザ) – broofa

答えて

21

のWebKit、ひいてはChromeは、あなたがgetDataを呼び出すことができるときに、非常に制限的です。あなたはdragstart or dragoverの中でそれをすることは許されていません。私はthis is the canonical bugだと思います。

+2

クロムではまだ動作しません。バージョン48 – Lombas

+0

@Lombasバグのステータスが2013-03-22現在解決済みとなっているので、動作するはずです。 –

1

this answerを参照:

データがドロップでのみ利用可能であるあなたは、Webページ全体に何かをドラッグすることが起こるときウェブサイトがデータをつかむ可能性があるので、これはセキュリティ機能です。

関連する問題