我已经在DIVs上实现了HTML5 drag and drop。它在所有浏览器中都工作得很好,包括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>发布于 2011-07-08 06:19:39
我敢打赌,这在IE8中是行不通的,因为IE8和IE9都不完全支持HTML5拖放,这只是在IE10 Developer Preview 2中添加的。HTML5接口基于IE5中的拖放实现,但有一些不同之处。最相关的是,IE9和之前的版本不支持元素的draggable属性-在IE9中唯一可以拖动的是默认情况下可以拖动的东西:文本选择、链接和图像。
所以要让它在IE9 (或IE8)中工作,你需要在你的超文本标记语言中添加一个链接(该链接必须有一个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。
https://stackoverflow.com/questions/6611456
复制相似问题