意外的HTML5拖动&丢弃重影图像行为
Unexpected HTML5 drag & drop ghost image behaviour
我花了一天的时间来解决一个有趣的问题——我有一些画布,我想使用本地HTML5拖放功能来拖动它们。一切都很好,只是我最终发现,在Chrome 28.0.1500.95中,如果画布是内联块div的子级,则不会出现画布的默认重影图像
<html>
<body>
<div style='display:inline-block'>
<canvas id='canvas1' width='100px' height='100px' draggable='true'></canvas>
</div>
<div>
<canvas id='canvas2' width='100px' height='100px' draggable='true'></canvas>
</div>
<script type="text/JavaScript">
var canvas1, canvas2, context1, context2;
canvas1 = document.getElementById('canvas1');
context1 = canvas1.getContext('2d');
canvas2 = document.getElementById('canvas2');
context2 = canvas2.getContext('2d');
context1.fillText('no drag', 10, 30);
context2.fillText('yes drag', 10, 30);
</script>
</body>
</html>
当我尝试拖动"是拖动"时,会出现重影图像,但不适用于"不拖动"。然而,如果我也坚持在一个降落目标上,我可以像正常情况下"不拖动"它来触发它,尽管没有鬼魂。我想知道为什么重影图像显然是基于父级的CSS而消失的,或者这里是否发生了其他事情——提前感谢!
这可能只是Chrome中的一个错误(一旦你真正.setData()
,它似乎在Firefox中有效)
如果你只是在寻找一个简单但有点讨厌的解决方案:基于画布的显式.setDragImage()
。
function dragstart(e) {
var di = new Image();
di.src = this.toDataURL("image/png");
e.dataTransfer.setDragImage(di, 10, 10);
// Run in firefox
e.dataTransfer.setData("text/plain", this.id);
}
摆弄(您可能想稍微摆弄一下图像的位置)。
相关文章:
- PhantomJS重影驱动程序停止
- Chrome原生拖放相对容器并不能正确渲染重影
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- HTML5拖放-如何删除IE上的默认重影图像
- Ckfinder在上传之前重命名图像
- 更改HTML5拖放中的重影图像
- 重置图像滑块的Javascript计时器
- 使用setTimer重置图像(onclick)
- 在自动重影文本区域中打字时,会将焦点集中在元素的顶部
- 如何在功能完成后重置图像
- 拖动时没有重影图像
- 为什么更改画布大小后必须重绘图像
- Javascript:键下事件:“向上”箭头键阻止进一步的键下事件?(回答:键盘重影)
- jQuery滑块重定向图像
- 意外的HTML5拖动&丢弃重影图像行为
- 如何重置图像元素's宽度
- 主干-如何重构此代码以防止重影视图
- 在Microsoft Windows上,当使用HTML5拖放时,我确实会在拖放过程中看到拖动图标(重影图像)
- 在网页上-如何显示(轻)图像,并在客户端下载(重)图像时将其替换为(重)
- html 拖放设置拖动图像在第一次拖动时不会设置重影图像