【问题标题】:Internet Explorer 9 Drag and Drop: Drop-Event not working on div as targetInternet Explorer 9 拖放:Drop-Event 不适用于作为目标的 div
【发布时间】:2014-10-27 21:42:26
【问题描述】:

我有几个水平排列且可拖动的 div。每个 div 的内部始终是一个输入 + 一些操作按钮。目标是允许用户通过拖放更改 div 的顺序。它在所有浏览器中都可以正常工作,除了 IE9,IE9 存在将当前元素放到新位置的问题。

当我在 div 本身上释放鼠标时,它不起作用。但是,如果我将鼠标悬停在 div 内的按钮或输入字段上,它就可以正常工作。

查看实际操作: http://jsfiddle.net/aouamurj/

拖放的魔力从第 181 行开始。尝试按下项目符号的最后一个按钮并将其拖到另一个 div 上。在例如Chrome 可以正常工作,但在 IE9 中,您需要将元素放在按钮或输入字段上。

HTML

<!-- One div with a input and button inside. The button should initialize the drag -->
<div class="survey-question" draggable="true">
  <input type="text" name="q1" value="1" tabindex="1">
  <button type="button" title="Drag and drop question" data-action="drag" data-application="survey">&#9679;</button>
</div>

JavaScript(重要部分)

button.addEventListener("dragstart", dragStart);
button.addEventListener("drop", dragStop);
button.addEventListener("mousemove", handleDragMouseMove);

function dragStart(e) {
    this.dragSrcEl = e.target.parentNode;
    this.dragSrcElVal = e.target.parentNode.children[0].value;

    e.dataTransfer.effectAllowed = "move";
    e.dataTransfer.setData("text", e.target.parentNode.innerHTML);
},
function dragDrop(e) {
    e.stopPropagation();

    if (this.dragSrcEl != e.target.parentNode) {
        if (e.target.parentNode.classList.contains("survey-question")) {
            this.dragSrcEl.children[0].value = e.target.parentNode.children[0].value;
            e.target.parentNode.innerHTML = e.dataTransfer.getData("text");
        }
    }

    return false;
}

function handleDragMouseMove(e) {
    if (window.event.button === 1) {
        e.target.dragDrop();
    }
}

我怎样才能避免这种情况?

【问题讨论】:

  • 你找到解决办法了吗?
  • 不,我没有。不久前,但我认为我坚持使用按钮解决方案而不是 div。

标签: javascript drag-and-drop internet-explorer-9


【解决方案1】:

您必须为浏览器 IE 启用拖放功能。

请按照步骤为 IE 启用拖放功能。

  1. 转到工具
  2. -> 转到 Internet 选项
  3. -> 转到安全标签。
  4. -> 点击自定义级别...
  5. -> 搜索拖放设置并点击启用。
  6. -> 点击确定

【讨论】:

  • @Andreas Remdt 如果以上答案有用,请点击投票或点击“正确”。
  • 拖放在 IE 中已启用并且已启用。所以这似乎不是原因。如前所述,DnD 本身在 IE 中有效,但直接放入 div 将不起作用。
猜你喜欢
  • 2023-03-18
  • 2016-01-30
  • 2015-07-01
  • 2013-07-05
  • 2013-01-14
  • 2016-01-25
  • 2012-10-15
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多