Drag and Drop(DND)是HTML5裡一個趣味與實用性很高的一個功能,在實作時發現一個有趣的小問題。我們從程式碼來看問題比較好說明。
以下為http://msdn.microsoft.com/en-us/library/ie/ms536744(v=vs.85).aspx範例程式碼:
var sImageURL; function InitiateDrag() /* The setData parameters tell the source object to transfer data as a URL and provide the path. */ { event.dataTransfer.setData("URL", oImage.src); } function FinishDrag() /* The parameter passed to getData tells the target object what data format to expect. */ { sImageURL = event.dataTransfer.getData("URL") oTarget.innerText = sImageURL; }
以下為http://www.w3schools.com/html/html5_draganddrop.asp範例程式碼:
function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
問題點於在setData方法的format參數,完整是setData(format,data)。以上程式能正常執行,我們再看其他程式。