Javascript HTML5拖放-Firefox正在重定向
我试图在我的应用程序中实现html5的拖放功能,但Firefox总是被重定向到拖放图像的源。我正在使用Javascript HTML5拖放-Firefox正在重定向,javascript,html,firefox,drag-and-drop,Javascript,Html,Firefox,Drag And Drop,我试图在我的应用程序中实现html5的拖放功能,但Firefox总是被重定向到拖放图像的源。我正在使用e.stopPropagation()。在Chromium中,一切都按预期进行。奇怪。。。 代码如下: DuOS 0.0.0 window.clickedIcons=Array(); window.draggedIcon={}; window.draggedIcon.offset=Array(); window.draggedIcon.element=null; //波希波瓦尼 函数拖动_开始
e.stopPropagation()
。在Chromium中,一切都按预期进行。奇怪。。。
代码如下:
DuOS 0.0.0
window.clickedIcons=Array();
window.draggedIcon={};
window.draggedIcon.offset=Array();
window.draggedIcon.element=null;
//波希波瓦尼
函数拖动_开始(e){
window.draggedIcon.element=e.target;
event.dataTransfer.effectAllowed='copyMove';
event.dataTransfer.setData('text/plain','hola');//hack
var style=window.getComputedStyle(event.target,null);
window.draggedIcon.offset[0]=parseInt(style.getPropertyValue(“左”),10)-event.clientX;console.log(window.draggedIcon.offset[0]);
window.draggedIcon.offset[1]=parseInt(style.getPropertyValue(“top”),10)-event.clientY;console.log(window.draggedIcon.offset[1]);
window.draggedIcon.element=event.target;
}
函数拖过(e){
e、 预防默认值();
返回false;
}
功能下降(e){
window.draggedIcon.element.style.left=(event.clientX+window.draggedIcon.offset[0])+'px';
window.draggedIcon.element.style.top=(event.clientY+window.draggedIcon.offset[1])+'px';
window.draggedIcon.element.style.visibility='visible';
window.draggedIcon.element=null;
如果(e.stopPropagation){e.stopPropagation();}
返回false;
}
var xresult=document.evaluate('//body/*[@class=“desktop”]/*[@class=“icon”]',document,null,XPathResult.ANY_TYPE,null);
var dm=xresult.iterateNext();
while(dm){
dm.addEventListener('dragstart',drag_start,false);
dm.addEventListener('click',click,false);
dm=xresult.iterateNext();
}
document.body.addEventListener('dragover',drag_over,true);
document.body.addEventListener('drop',drop,true);
感谢您的帮助,m93a。您需要:
谢谢,你真的帮了我:D
preventDefault
完成了这项工作!但是有人能解释一下为什么删除会触发Firefox上的重定向吗?@MatthieuRiegler Wild guess:将文件放到Firefox中会导航到该文件,这就是为什么默认设置是导航到被删除的URL。在我的例子中,drag
之前调用了event.dataTransfer.setData('text/plain',“css”)
,FF试图打开URL“css”
。
function drop(e) {
if(e.preventDefault) { e.preventDefault(); }
if(e.stopPropagation) { e.stopPropagation(); }
window.draggedIcon.element.style.left = (event.clientX + window.draggedIcon.offset[0]) + 'px';
window.draggedIcon.element.style.top = (event.clientY + window.draggedIcon.offset[1]) + 'px';
window.draggedIcon.element.style.visibility = 'visible';
window.draggedIcon.element = null;
return false;
}