一度に 1 つだけが div にあることを確認して、div から div に画像をドラッグしようとしています。Opera では問題なく動作しますが、Chrome (およびその他) では失敗します。javascript から要素を更新するまでは機能しているように見えますが、更新は Chrome で内部的に更新されていないようです。
いずれかの画像を 3 番目の正方形にドラッグできますが、すべてがフリーズします。これを回避するためのアイデアが欲しいです。
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
.outer {
width: 150px;
height: 40px;
}
.square {
float: left;
width: 32px;
height: 32px;
margin: 1px;
padding: 0px;
border: 1px solid #aaaaaa;
}
</style>
<script type="text/javascript">
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.appendChild(document.getElementById(data));
lock();
}
function lock() {
var squares = document.getElementsByClassName("square");
for (var i = 0; i < squares.length; i++) {
if (squares[i].children.length == 0) {
squares[i].ondragover = 'allowDrop(event)';
}
else {
squares[i].ondragover = '';
}
}
}
function init() {
document.write("<div class='outer square' ondrop='drop(event)' ondragover='allowDrop(event)'><img src='bb.png' alt='bb' id=1 class='movable' draggable=true ondragstart='drag(event)'></div>");
lock();
}
</script>
</head>
<body>
<script type="text/javascript">
init();
</script>
<div class='outer square' ondrop='drop(event)' ondragover='allowDrop(event)'>
<img src="aa.png" alt='aa' id=2 class='movable' draggable=true ondragstart="drag(event)">
</div>
<div class='outer square' ondrop='drop(event)' ondragover='allowDrop(event)'>
</div>
</body>
</html>