Javascript - 将原始图像放入另一个容器后保留原始图像
Javascript - Keep the original image after dropping it in another container
例如:
<script type="text/javascript">
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev) {
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
ev.preventDefault();
}
</script>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<img id="x" src="X.png" draggable="true" ondragstart="drag(event)" width="75" height="75" />
我想将x.png
文件拖放到div 中,但如果我这样做,x.png
将移动到div 中。我怎样才能实现这一点,在我拖放后,div 得到了一个x.png
,而原来的x.png
仍然在原地?
您可以通过使用 cloneNode(true) 方法复制所需的 DOM 元素来做到这一点
<script type="text/javascript">
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev) {
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data).cloneNode(true));
ev.preventDefault();
}
</script>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<img id="x" src="X.png" draggable="true"
ondragstart="drag(event)" width="75" height="75" />
我将坚持这里显示的示例:http://www.w3schools.com/html/html5_draganddrop.asp
假设我们有这个文档:
<!DOCTYPE HTML>
<html>
<head>
<script>
<!-- script comes in the text below -->
</script>
</head>
<body>
<div id="div1" ondrop="drop(event)"
ondragover="allowDrop(event)"></div>
<img id="drag1" src="img_logo.gif" draggable="true"
ondragstart="drag(event)" width="336" height="69">
</body>
</html>
正常拖放
普通拖放具有分配给相应元素的功能:
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
拖放和复制
而你必须改变 drop 函数,以便它复制 DOM 元素而不是移动它。
//other functions stay the same
function drop(ev) {
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data).cloneNode(true));
}
试试这个页面: http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddrop
然后将.cloneNode(true)
附加到getElementById(data)
.
您甚至可以在文件管理器中执行以下操作:Ctrl-Key 从移动切换到复制:
function drop(ev) {
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
if (ev.ctrlKey)
ev.target.appendChild(document.getElementById(data).cloneNode(true));
else
ev.target.appendChild(document.getElementById(data));
}
相关文章:
- 查找仅适用于原始图像的图像放大算法的名称
- 在不影响原始画布外观的情况下调整图像大小
- 如何从缩放的图像裁剪并保持原始图像的纵横比
- 如何在文件打开和调用图像区域选择时获取原始图像大小
- 原始图像数据显示
- 在将图像作为原始图像二进制数据(png或jpeg)上传到服务器之前,裁剪或调整图像大小
- jquery悬停后恢复到原始图像是更好的方式
- Javascript - 将原始图像放入另一个容器后保留原始图像
- HTML/CSS:以 % 屏幕宽度显示图像*最大*原始宽度
- 如何从 Javascript 中的轨道加载的图像中获取原始图像尺寸
- HTML/CSS:来自原始图像数据的背景图像,而不是网址
- jQuery 在缓存中预加载图像并在其他函数继续之前获取原始图像大小
- 拖动原始图像时打印图像的副本
- 拉斐尔.js - 具有原始宽度和高度大小的图像
- Graysclae 到 CSS 中的原始自动图像过渡
- 单击将 img 更改为新的 img 并返回原始图像
- 根据原始图像高度使用 Photoshop 和 JavaScript 调整条件图像大小
- 在 JavaScript 中将原始图像的十六进制字符串转换为位图图像
- 将调整大小的图像坐标映射回原始图像坐标
- 强制下载的图像原始数据是损坏的android 2.3