javascript - 从未为 Safari 触发 OnDrop 事件

标签 javascript html css drag-and-drop webkit

我正在构建一个专门针对 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/

相关文章:

javascript - 如何知道 Angular2 应用程序已经完成渲染

javascript - 如何在保留行的同时删除所有多余空格

javascript - 从 javaScript 更改两个 html 文件的字符串

css - 为什么我的 HTML5 <picture> 的高度在其 <img> 之外,为什么它不包含 <img>?

html - 下拉菜单继承其父项的宽度,如果其子项比父项宽度宽,则对其进行裁剪

JavaScript JSON 表匹配

javascript - Angular 为事件动态生成的 ID 定位

javascript - HTML表格打印

html - 具有圆形路径的图像上的 CSS 剪辑

html - 如何将选择选项转换为可点击链接区域?