2016-03-01 67 views
-5

我的代码存在问题。 为什么在Firefox和Internet Explore不起作用? 此代码在Google Chrome上运行良好。JS无法在Firefox和资源管理器上工作

JS:

var i=1; 

function dragStart(ev) { 
    ev.dataTransfer.effectAllowed='move'; 
    ev.dataTransfer.setData("Text", ev.target.getAttribute('id')); 
    ev.dataTransfer.setDragImage(ev.target,50,50); 
    return true; 
} 

// these functions prevents default behavior of browser 
function dragEnter(ev) { 
    event.preventDefault(); 
    return true; 
} 
function dragOver(ev) { 
    event.preventDefault(); 
} 

// function defined for when drop element on target 
function dragDrop(ev) { 

    var data = ev.dataTransfer.getData("Text"); 
    ev.target.appendChild(document.getElementById(data)); 
    if (ev.shiftKey) 
    { 

    var nodeCopy = document.getElementById(data).cloneNode(true); 
    nodeCopy.id = "newId"+i; /* We cannot use the same ID */ 
    ev.target.appendChild(nodeCopy); 
    i++; 

    } 
    else 
    ev.target.appendChild(document.getElementById(data)); 

    ev.stopPropagation(); 
    return false; 
} 

HTML:

<article id="dropIt" ondragenter="return dragEnter(event)" ondrop="return dragDrop(event)" ondragover="return dragOver(event)"></article> 

<article id="holder" class="no-print" ondragenter="return dragEnter(event)" ondrop="return dragDrop(event)" ondragover="return dragOver(event)"> 
<div class="drag" id="boxB" draggable="true" ondragstart="return dragStart(event)"></div> 
</article> 

为什么在Firefox和Internet浏览不起作用? 感谢

+0

我没有看到任何东西也是镀铬:https://jsfiddle.net/silviagreen/jqtubdgp/ – silviagreen

+0

替换所有'ondragenter =“返回dragEnter(event)“'to'ondragenter =”dragEnter“' –

+1

你可以给我们更多的信息;像什么不工作,你想做什么。 – mane

回答

0

你必须正确声明事件这样

// these functions prevents default behavior of browser 
function dragEnter(event) { 
    event.preventDefault(); 
    return true; 
} 
function dragOver(event) { 
    event.preventDefault(); 
} 
+0

这将修复Firefox,但不修复Internet Explorer 请参阅https://github.com/MihaiValentin/setDragImage-IE,例如 – Ultradiv

+0

良好...谢谢您(我通过事件更改了ev) – netkingZ

相关问题