![](/img/trans.png)
[英]JQuery drag and drop not working in firefox but works in chrome and and IE
[英]JavaScript drag and drop works in Chrome, but not in IE
我通过拖放功能交换了两个div背景。 它在Chrome中运行良好,但是如果我在IE中进行操作,则会崩溃。
这是HTML部分:
<div class="slot" id="slot1" draggable="true" ondragstart="onDragStart(event,0)" ondragenter="onDragEnter(event,0)" ondragover="onDragOver(event)" ondrop="onDrop(event,0)" onclick="removecard(0)"></div>
<div class="slot" id="slot2" draggable="true" ondragstart="onDragStart(event,1)" ondragenter="onDragEnter(event,1)" ondragover="onDragOver(event)" ondrop="onDrop(event,1)" onclick="removecard(1)"></div>
<div class="slot" id="slot3" draggable="true" ondragstart="onDragStart(event,2)" ondragenter="onDragEnter(event,2)" ondragover="onDragOver(event)" ondrop="onDrop(event,2)" onclick="removecard(2)"></div>
这是JavaScript部分:
function onDragStart(ev,a){
ev.dataTransfer.setData("DraggingIndex",a);
}
function onDragEnter(ev,a){
ev.preventDefault();
}
function onDragOver(ev){
ev.preventDefault();
}
function onDrop(ev,b){
var a = ev.dataTransfer.getData("DraggingIndex");
slotchange(a,b);
deckexpression(deck);
}
在Chrome浏览器中效果很好,但在IE中却无法正常工作。 我猜想在IE中,onDragStart或onDrop函数无法处理两个参数。 我的目的是要操作slotchange(a,b),其中a和b是两个插槽的索引。
请教我如何解决IE中的问题。 谢谢。
您正在使用哪个版本的IE? Internet Explorer 9+支持拖放。
这是在IE上运行的具有2个参数的onDragStart和onDrop的示例:
HTML:
<div id="div1" ondrop="drop(event, 1)" ondragover="allowDrop(event)"></div>
<div class='slot' id="drag1" draggable="true" ondragstart="drag(event, 2)" width="336" height="69"> </div>
JS:
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev, secondParam) {
ev.dataTransfer.setData("Text", ev.target.id);
console.log(secondParam);
}
function drop(ev, secondParam) {
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
console.log(secondParam)
}
JSFiddle: http : //jsfiddle.net/amontellano/8twY6/
看来IE仅支持设置“文本”和“ URL”。
http://msdn.microsoft.com/zh-CN/library/ie/ms536744(v=vs.85).aspx
我设置多个值的解决方法是:
var data = {
id: ev.target.id,
dragIndex: index
};
ev.dataTransfer.setData("Text", JSON.stringify(data));
然后,您必须在删除时解析它:
var data = JSON.parse(ev.dataTransfer.getData("Text"));
console.log(data.id);
console.log(data.dragIndex);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.