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)。以上程式能正常執行,我們再看其他程式。