2012-03-02 90 views
23

我目前正在使用HTML5 Drag and Drop API工作,以提供附加功能,包括將項目拖入和拖出瀏覽器。我目前遇到了特定於Chrome的問題(否則只會在Firefox中進行測試,並按預期工作)。HTML5拖放getData()僅適用於Chrome中的拖放事件?

問題是我不能使用event.dataTransfer.getData(type)方法在除drop事件之外的任何事件中返回dragstart事件中的數據集。

我設置的事件像這樣,結合dragstart事件(它火)後:

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

然後在drop事件,我可以得到的數據的罰款。

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

但是我不能對任何其它事件(如dragover)使用同樣的方法如上所述。即使我在撥打setData()(即dragstart回撥)後嘗試在線路上使用上述方法,它仍然會返回undefined

因此,在Chrome中,問題是Chrome中的getData將始終返回undefined,但在drop事件回調中除外。 (在Firefox中,我可以成功獲取正確的數據。)

如果您有對同一拖動元素的dataTransfer對象的引用,那麼爲什麼要在數據被刪除之前無法獲取數據?

只是想知道:

  • 有沒有人有這樣的煩惱與鍍鉻前?
  • 有哪些解決方法?
  • 或者,Chrome是否需要修復?

資源: Specification for HTML5 drag and drop.

+0

[此錯誤報告](http://code.google.com/p/chromium/issues/detail?id=94023)似乎相關。 – pimvdb 2012-03-02 14:24:14

+0

[HTML5 DnD dataTransfer setData或getData在除Firefox以外的每個瀏覽器中都不起作用]的可能重複(http://stackoverflow.com/questions/11927309/html5-dnd-datatransfer-setdata-or-getdata-not-working-in-除瀏覽器之外的所有瀏覽器) – broofa 2013-10-12 11:35:24

回答

21

的WebKit,因此Chrome的,是當你可以調用getData非常嚴格。你不能在dragstart or dragover之內這樣做。我認爲this is the canonical bug

+2

仍然無法在Chrome中使用。版本48 – Lombas 2016-03-10 16:50:23

+0

@Lombas它應該工作,因爲bug的狀態表示2013年2月22日解決修訂 – 2016-12-07 13:48:51

1

引用this answer

的數據僅在降可用,這是一個安全功能,因爲當你碰巧要拖動整個網頁一些網站可以抓住的數據。