HTML5移动拖放

VCN*_*inc 4 html javascript mobile html5 drag-and-drop

这是我对WHATWG HTML5 拖放的实现:

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>";
}
Run Code Online (Sandbox Code Playgroud)
.div {
    width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

它可以在Google Chrome浏览器中正常运行,但不能在iOS或Android中运行。我已经阅读了有关此主题的其他主题,但是其中大多数建议使用jQuery或JavaScript插件。

是否可以使HTML拖放实现在iOS和Android(移动设备)上工作?

小智 5

我也有同样的需求,并编写了一个polyfill来启用HTML5在移动设备(Android和IOS)上的拖放:

https://github.com/Bernardo-Castilho/dragdroptouch

希望这对您有用。


pwd*_*dst 3

不幸的是,除 Internet Explorer Mobile 10 及以上版本和单个已弃用的 Opera Presto 版本(现已被基于 Webkit 的版本所取代)之外,目前任何移动浏览器都不支持拖放。请参阅http://caniuse.com/#feat=dragndrop

最好的解决方案是检测对拖放的支持(确保这不会在支持 API 的移动版本浏览器中给您带来误报),然后使用 JavaScript 在移动设备上进行填充。这也将有助于在旧版浏览器版本中提供支持,这些版本早于对拖放的本机支持。

您可以使用优秀的YepNope 条件加载库来运行测试,然后有条件地加载一个或多个脚本来为拖放提供 JavaScript 支持,或者您可以使用Modernizr来执行测试并加载脚本。