我想通過javascript的event.dataTransfer傳遞一個本地對象的方式來拖放。我正在編寫一個CMS的前端編輯器部分,並希望用戶能夠拖放元素(包括文件,圖像,HTML片段等各種類型的元素)。這就是爲什麼我想傳遞一個真實的對象,所以我可以附加數據來指定必要的事情,以瞭解如何呈現它。通過dataTransfer傳遞對象
一種解決方法是使用jQuery的.data()將對象附加到頁面上的其他內容,然後只需在setData中傳遞選擇器字符串...但我並不特別喜歡這種黑客行爲。
這也可能與解決的jQuery UI的可拖動/投擲的(我不完全反對使用任何庫),但由於懸浮窗是在iframe中,這是一個實際上是在最新的jQuery UI的一個記錄的缺陷(1.10.2)。另外,如果可能的話,我強烈希望本地執行此操作。這個應用程序中已經有足夠的庫。
這裏的問題:http://jsfiddle.net/AHnh8/
var foo = {foo: "foo", bar: "bar"};
$dragme.on("dragstart", function(e) {
e.originalEvent.dataTransfer.setData("foo", foo);
});
$dropzone.on("dragenter", function(e) { e.preventDefault(); });
$dropzone.on("dragover", function(e) { e.preventDefault(); });
$dropzone.on("drop", function(e) {
console.log(e.originalEvent.dataTransfer.getData("foo")); // [Object object]
console.log(typeof e.originalEvent.dataTransfer.getData("foo")); // string
});
現在,看完後的規格,我完全理解爲什麼失敗。我不明白的是如何最終實現我想要的。
感謝
我想你只需要在接收其發送和JSON.parse數據前字符串化的數據。 – Deee 2017-12-15 08:06:13