简体   繁体   English

HTML5 Draggable setDragImage不适用于Chrome上的画布

[英]HTML5 Draggable setDragImage doesn't work with canvas on Chrome

I'm trying to use canvas as my drag image in native HTML5 Drag And Drop API. 我正在尝试使用画布作为本机HTML5拖放API中的拖动图像。

The problem is that it works on Firefox but not on Chrome (58) and I can't pinpoint the problem. 问题是它可以在Firefox上运行,但不能在Chrome(58)上运行,我无法查明问题所在。

Code: https://jsfiddle.net/196urLwd/5/ 代码: https//jsfiddle.net/196urLwd/5/


<div id="thing" draggable="true">DRAG ME</div>

function onDragStart(event){

    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');

    canvas.width = 100;
    canvas.height = 20;

    context.fillStyle = '#333333';
    context.fillRect(0, 0, canvas.width, canvas.height);

    context.fillStyle = '#999999';
    context.font = 'bold 13px Arial';
    context.fillText('DRAGGING...', 5, 15);

    event.dataTransfer.setData('text', 'lorem ipsum');
    event.dataTransfer.effectAllowed = 'copy';    
    event.dataTransfer.setDragImage(canvas, -15, 9);

};

var theThing = document.getElementById('thing');
theThing.addEventListener('dragstart', onDragStart, false);

What am I doing wrong? 我究竟做错了什么?

Chrome seems to require the canvas to be in the dom Chrome似乎要求将画布放入dom

document.body.append(canvas);

and just hide it with some css 并用一些CSS隐藏它

canvas{
  position:absolute;
  left:-100%;
}

https://jsfiddle.net/196urLwd/6/ https://jsfiddle.net/196urLwd/6/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM