javascript - Internet Explorer 9 中不再触发 ondragstart 事件

标签 javascript jquery html drag-and-drop internet-explorer-9

我已经实现了HTML5 drag and drop在 DIV 上。它在所有浏览器中都能很好地工作,包括 IE8。但自从IE9发布后,它就不再起作用了。 ondragstart 事件不会被触发。这是我的代码,使用 jQuery:

$('#mydiv')
   .bind('selectstart', function(e) {
        // Prevent text selection
        return false;
    })
    .bind('dragstart', function(e) {
        console.log('dragstart');
    })
    .bind('drag', function(e) {
        console.log('drag');
    })
    .bind('dragend', function(e) {
        console.log('dragend');
    });

和 HTML

<div draggable="true">DnD this thing!</div>

最佳答案

我敢打赌这在 IE8 中不起作用,因为 IE8 或 IE9 都不完全支持 HTML5 拖放,这只是在 IE10 Developer Preview 2 中添加的。 。 HTML5 API是基于IE5中拖放的实现,但也有一些区别。最相关的是,IE9 及之前的版本不支持元素上的 draggable 属性 - IE9 中唯一可以拖动的内容是默认情况下可拖动的内容:文本选择、链接和图像。

因此,要使其在 IE9(或 IE8)中工作,您需要在 HTML 中添加一个链接(并且该链接必须有一个 href):

<div id="mydiv"><a draggable="true" href="#">DnD this thing!</a></div>

然后,您的 JavaScript 应该可以按预期工作,只需进行一些细微的修改:

$('#mydiv')
   .bind('selectstart', function(e) {
        // Prevent text selection
        return false;
    })
    .bind('dragstart', function(e) {
        e.originalEvent.dataTransfer.setData("Text", $(e.target).closest('div').attr('id'));
        console.log('dragstart');
    })
    .bind('drag', function(e) {
        console.log('drag');
    })
    .bind('dragend', function(e) {
        console.log('dragend');
    })
    .bind('click', function(e) {
        return false;
    });

Here's an example which I've tested in Firefox and IE9 .

关于javascript - Internet Explorer 9 中不再触发 ondragstart 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611456/

相关文章:

javascript - 无法在 Firefox 中为同一输入字段触发 ONKEYDOWN 和 ONCHANGE 事件

javascript - 如何在不使用查询字符串的情况下将数据从 javascript 文件传递​​到 View

javascript - 如何检测一连串相关事件已完成,然后发出一个事件

javascript - 下拉菜单切换不适用于 ngTouch

javascript - Ajax 禁用表单字段

javascript - 从表单输入中获取文本。 Javascript

javascript - 尝试显示json内容

jquery - 在 WordPress 媒体选择器中获取多个图像

javascript - 将 validate.js 与 Twitter Bootstrap 结合使用

javascript - 是否可以在不使用 Javascript 加载特定 div 的情况下刷新页面?