Javascript 混合浏览器支持拖放
我有一个拖放测验模块,它似乎可以在Chrome、Internet Explorer和Opera中使用,但由于某些原因,它不能在FireFox中使用(Safari似乎是在浪费时间) 有人能解释一下我需要在代码中添加什么才能让FireFox识别这种编码吗Javascript 混合浏览器支持拖放,javascript,html,drag-and-drop,Javascript,Html,Drag And Drop,我有一个拖放测验模块,它似乎可以在Chrome、Internet Explorer和Opera中使用,但由于某些原因,它不能在FireFox中使用(Safari似乎是在浪费时间) 有人能解释一下我需要在代码中添加什么才能让FireFox识别这种编码吗 <html> <head> <meta charset="UTF-8"> <style> .pillHole {width:80px; height:40px;
<html>
<head>
<meta charset="UTF-8">
<style>
.pillHole {width:80px;
height:40px;
border:1px solid #c8c8c8;
border-radius:20px;
background-color:#ededed;
-webkit-user-drop: element;}
.dropBox {width:130px;
height:130px;
border:3px solid #dfdfdf;
border-radius:20px;
margin:5px 0px 0px 5px;
padding:3px;
background:#efefef;}
.textBox {width:130px;
height:76px;
line-height:50px;
font-size:14px;
text-align:center;
color:#000;}
.pill {width:80px;
height:40px;
border:1px solid #dcdcdc;
border-radius:20px;
background-color:#dfdfdf;
line-height:38px;
font-size:14px;
text-align:center;
color:#000;
cursor: move;
-webkit-user-drag: element;
-webkit-user-select: none;}
</style>
<script>
function allowDrop(ev)
{ev.preventDefault();}
function drag(ev)
{ev.dataTransfer.setData("Text", ev.target.id);
objctRfrnc = ev.target.id;
var trgtRfrncO = document.getElementById(ev.srcElement.id).parentNode.id;
console.log("lift zone = ", trgtRfrncO);
console.log("drag element = ", objctRfrnc);}
function drop(ev)
{ev.preventDefault();
ev.target.appendChild(document.getElementById(ev.dataTransfer.getData("Text")));
var trgtRfrncN = document.getElementById(ev.srcElement.id).getAttribute("id");
console.log("drop zone = ", trgtRfrncN);}
</script>
</head>
<body>
<title>Form Explorer</title>
<center>
<br>
<h1>Drag and Drop Test</h1>
<div id="drpTrgtA01"
class="pillHole"
ondrop="drop(event)"
ondragover="allowDrop(event)"
style="margin:5px 0px 0px 5px">
<button type="button"
id="drgObj"
class="pill"
draggable="true"
ondragstart="drag(event)">Object</button>
</div>
<br>
<div class="dropBox"
id="BoxA1"
style="border:3px solid #dfdfdf">
<div class="textBox"
style="margin-top:10px">Drop Zone</div>
<center>
<div class="pillHole"
id="drpTrgtQ01"
style="margin-top:-2px"
ondrop="drop(event)"
ondragover="allowDrop(event)">
</div>
</center>
</div>
</center>
</body>
</html>
.柱孔{宽度:80px;
高度:40px;
边框:1px实心#c8c8c8;
边界半径:20px;
背景色:#ededed;
-webkit用户drop:element;}
.dropBox{宽度:130px;
高度:130像素;
边框:3px实心#dfdfdf;
边界半径:20px;
保证金:5px 0px 0px 5px;
填充:3倍;
背景:#efefef;}
.textBox{宽度:130px;
高度:76px;
线高:50px;
字体大小:14px;
文本对齐:居中;
颜色:#000;}
.药丸{宽度:80px;
高度:40px;
边框:1px实心#DCDC;
边界半径:20px;
背景色:#dfdfdf;
线高:38px;
字体大小:14px;
文本对齐:居中;
颜色:#000;
光标:移动;
-webkit用户拖动:元素;
-webkit用户选择:无;}
功能allowDrop(ev)
{ev.preventDefault();}
功能阻力(ev)
{ev.dataTransfer.setData(“Text”,ev.target.id);
objctRfrnc=ev.target.id;
var trgtRfrncO=document.getElementById(ev.srcElement.id).parentNode.id;
控制台日志(“提升区=”,trgtRfrncO);
log(“drag element=,objctRfrnc);}
功能下降(ev)
{ev.preventDefault();
appendChild(document.getElementById(ev.dataTransfer.getData(“文本”));
var trgtRfrncN=document.getElementById(ev.srcElement.id).getAttribute(“id”);
log(“drop zone=,trgtRfrncN);}
表单浏览器
拖放试验
对象
下降区
到目前为止,我发现问题是因为用于拖动的元素是一个按钮——如果它变成了一个普通的div,那么它就可以工作了——但是为什么Firefox不允许拖动按钮?!?成功!!!显然,Firefox无法识别“event.srcmelement.id”,但“event.target.id”似乎可以在所有浏览器上使用(当然,Safari除外)。所以问题解决了。