我開始嘗試使用HTML5 Drag and Drop。然後,在dragstart事件處理程序,我們應該運行setData()
,它接收兩個參數:格式和數據。我應該使用什麼格式(MIME類型)來進行HTML5拖放操作?
function dragstart_handler(ev) {
ev.dataTransfer.setData('text/plain', 'foobar');
}
我想將某種「對象」從一個容器拖到另一個容器中,在我的web應用程序中。 「對象」是指具有多個屬性(顏色,文本,作者,日期等)的東西。
我應該使用什麼樣的格式(或MIME類型)的?
text/plain
?text/x-myapp-myobjtype
?application/x-myapp-myobjtype
?application/x-myapp.myobjtype+json
?- 別的東西?
- 多個?
我應該如何編碼我對象(數據參數的setData()
)?
- 逗號分隔(或任何其他分隔符)鍵=值對?
- 使用JSON序列化對象?
- 只是一個ID,並在懸浮窗,我必須只使用ID檢索完整的對象?
- 只發送一個對象的引用,甚至沒有序列化任何東西? (不可能的,數據參數必須是一個字符串)
(我認識到,「如何enconde對象拖放」可能是這裏的另一個問題,但它是密切相關的選擇MIME類型)
一些參考:
- http://dev.w3.org/html5/spec/dnd.html
- http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#dnd
- https://developer.mozilla.org/En/DragDrop/Drag_Operations
- https://developer.mozilla.org/En/DragDrop/DataTransfer
- http://www.html5rocks.com/en/tutorials/dnd/basics/
這真的取決於你究竟在做什麼,但「應用/ JSON」和JSON序列化對象看起來體面的選擇... – Spudd86
但不是'應用程序/ json'東西太普通?遵循該建議,任何OpenOffice文檔都應該有'application/zip' MIME類型,因爲它們實際上是壓縮文件。 –
進一步提高我的觀點:如果我使用'application/json',那麼類推之後,所有的SVG圖像應該是'application/xml'而不是'image/svg + xml',因爲它們也是XML文檔。同樣的邏輯也適用於使用XML序列化的任何東西(比如Google Earth KML文件,目前使用'application/vnd.google-earth.kml + xml'類型;或Atom提要,使用'application/atom + xml' )。 –