首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Internet Explorer 9中不再触发ondragstart事件

在Internet Explorer 9中不再触发ondragstart事件
EN

Stack Overflow用户
提问于 2011-07-07 21:35:32
回答 1查看 6.6K关注 0票数 2

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

代码语言:javascript
复制
$('#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

代码语言:javascript
复制
<div draggable="true">DnD this thing!</div>
EN

Stack Overflow用户

发布于 2011-07-08 06:19:39

我敢打赌,这在IE8中是行不通的,因为IE8和IE9都不完全支持HTML5拖放,这只是在IE10 Developer Preview 2中添加的。HTML5接口基于IE5中的拖放实现,但有一些不同之处。最相关的是,IE9和之前的版本不支持元素的draggable属性-在IE9中唯一可以拖动的是默认情况下可以拖动的东西:文本选择、链接和图像。

所以要让它在IE9 (或IE8)中工作,你需要在你的超文本标记语言中添加一个链接(该链接必须有一个href):

代码语言:javascript
复制
<div id="mydiv"><a draggable="true" href="#">DnD this thing!</a></div>

然后,您的JavaScript应该会像预期的那样工作,只需做一些细微的修改:

代码语言: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

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6611456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档