我尝试使用 html5 拖放 api,它在 Windows 计算机上的 chrome 20.0.1132 上运行得很好,但最有趣的是 - mac os lion 上的同一版本的 chrome 不起作用。我的意思是,dragstart 正在工作,但 drop 事件、dragleave、dragover 未触发。 这是 HTML:
<form id="fake_form" action="#" >
<div id="canvas_wrapper" style="overflow: hidden;width: 600px; position: relative;border: 1px solid black; margin-left: 30px;">
<canvas width="600" height="300" >
</canvas>
</div>
</form>
这是 JavaScript:
var canvas = $('canvas')[0];
canvas.addEventListener('dragenter', function(e){
console.log('dragenter');
}, false);
canvas.addEventListener('dragleave', function(){
console.log('dragleave');
}, false)
canvas.addEventListener('dragover', function(e){
console.log('dragover');
if(e.preventDefault){
e.preventDefault();
}
return false;
}, false);
canvas.ondrop = function(e){
console.log('ondrop');
/** OTHER CODE **/
如果有帮助:在同一台 Mac 上的 Safari 上 - 它可以工作,我正在拖动图像标签,其中一些具有可拖动属性,其中一些 - 没有。刚刚检查过 - 在 Canary mac 版本 22 上它可以工作。
更新:我发现如果我删除行,dragstart 事件有一些魔力
有了这个e.dataTransfer.setData('src', src_var)
一切都变得正常
最佳答案
此问题的解决方案 - 当您使用e.dataTransfer.setData
时,第一个参数应该是正确的mime类型,我将其更改为text/plain
,一切都是开始工作
关于html - 删除在 Chrome Mac 版本上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11375360/