2014-01-25 212 views
4

這是我實現的WHATWG的HTML5 Drag and DropHTML5拖放移動

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.innerHTML+=" <p>"+document.getElementById(data).innerHTML+"</p>"; 
 
}
.div { 
 
    width:350px;height:70px;padding:10px;border:1px solid #aaaaaa; 
 
}
<div class="div" ondrop="drop(event)" ondragover="allowDrop(event)"></div> 
 
    <div class="div" ondrop="drop(event)" ondragover="allowDrop(event)"> 
 
    <button id="drag1" draggable="true" ondragstart="drag(event)" width="336" height="69">Code</button> 
 
    <button id="drag2" draggable="true" ondragstart="drag(event)" width="336" height="69">Code</button> 
 
</div>

它工作正常,在谷歌瀏覽器,但不是在iOS或Android。我已閱讀關於此的其他主題,但其中大多數建議使用jQuery或JavaScript插件。

是否有可能使HTML拖在iOS和Android(移動設備)跌落實施工作?

+0

嘗試尋找這個http://touchpunch.furf.com/ –

回答

2

不幸的是拖放目前不只是移動互聯網瀏覽器10起和Opera的一個過時版本普雷斯托(現已被替換成Webkit內核的版本)的任何移動瀏覽器的支持。請參閱http://caniuse.com/#feat=dragndrop

最好的解決方案是detect support for drag and drop(確保在支持API的移動版瀏覽器中不會出現誤報),然後使用JavaScript在移動設備上進行填充。這也將有助於在傳統瀏覽器版本中支持拖放前的本地支持。

您可以使用優秀YepNope conditional loading library運行測試,然後有條件地裝入一個或多個腳本提供拖放支持JavaScript,或者你可以使用Modernizr雙方開展test並加載腳本。

+0

如果我使用JavaScript庫來處理觸摸(如jQuery UI)你有什麼建議? – VCNinc

+0

這在很大程度上取決於應用程序和你還有什麼要實現的目標 - 但如果你已經在應用程序中使用jQuery已經那麼你可以做差了很多,然後jQuery用戶界面的自定義生成僅包括拖放組件。你是否試圖實現拖放文件上傳,在頁面周圍移動組件?請參閱http://html5please.com/#polyfill獲取polyfill列表或搜索「拖放polyfill」。 – pwdst

+0

我實際上是試圖建立一個HTML5拖放所見即所得網頁建設者像webs.com或wix.com - 有什麼建議? – VCNinc