我正在构建一个专门针对 iPad 的网站。我正在尝试让拖放工作,但由于某种原因,ondrop 事件似乎永远不会触发。
你能帮我让 div 检测我何时将元素放在它上面吗?
我有一个非常简单的 HTML 页面,它演示了在 Safari 中永远不会触发 ondrop 事件。这在桌面 safari 和 ipad safari 中都失败了。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<style type="text/css">
<!--
body {
margin: 100px;
}
.dropTarget {
width: 300px;
height: 100px;
float: left;
display: inline;
margin: 10px;
background-color: green;
-webkit-user-drop: element;
}
.drag {
width: 100px;
height: 100px;
background-color: red;
-webkit-user-drag: element; /*element*/
}
-->
</style>
<script type="text/javascript">
<!--
function onDrop(e, ele) { alert("drop"); }
-->
</script>
</head>
<body>
<div class="drag">
</div>
<br/>
<div class="dropTarget" ondrop="onDrop(e,this);">
</div>
<br/>
</body>
</html>
最佳答案
您需要取消 dragover
事件的默认操作,然后才能使用 drop
事件,否则浏览器将忽略它。
改变你的dropTarget <div>
来自:
<div class="dropTarget" ondrop="onDrop(e,this);">
对此:
<div class="dropTarget" ondragover="return false;" ondrop="onDrop(event,this);">
如果您使用内联事件注册,则必须使用 event
传递事件而不是 e
.
关于javascript - 从未为 Safari 触发 OnDrop 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782213/