<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div
id="pasteImg"
style="width: 100%; height: 300px; border: dashed"
contenteditable="true"
></div>
<button style="width: 80px; height: 20px" id="btnGO">上传图片</button>
</body>
</html>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
window.onload = function () {
//聊天内容框 插入文本或者其他元素后,移动置光标到最新处
function insertHtmlAtCaret(childElement) {
var imgs = document.getElementById("pasteImg").children;
if (imgs.length > 3) {
alert("只支持上传4张图");
return false;
}
var sel, range;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
var el = document.createElement("div");
el.appendChild(childElement);
var frag = document.createDocumentFragment(),
node,
lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.type != "Control") {
IE < 9;
document.selection.createRange().pasteHTML(html);
}
}
//以下是拖拽事件
document.addEventListener(
"dragenter",
function (e) {
e.stopPropagation();
e.preventDefault();
},
false
);
document.addEventListener(
"dragleave",
function (e) {
e.stopPropagation();
e.preventDefault();
},
false
);
document.addEventListener(
"dragover",
function (e) {
e.stopPropagation();
e.preventDefault();
},
false
);
document.addEventListener(
"drop",
function (e) {
e.stopPropagation();
e.preventDefault();
handleFiles(e.dataTransfer.files);
},
false
);
//拖拽文件处理事件
handleFiles = function (files) {
alert("暂不支持拖拽上传,可直接复制本地图片粘贴");
};
function paste_img(e) {
if (e.clipboardData && e.clipboardData.items) {
var imageContent = e.clipboardData.getData("image/png");
ele = e.clipboardData.items;
for (var i = 0; i < ele.length; ++i) {
//粘贴图片
if (ele[i].kind == "file" && ele[i].type.indexOf("image/") !== -1) {
var blob = ele[i].getAsFile();
blobToDataURI(blob, function (result) {
var new_img = document.createElement("img");
new_img.setAttribute("src", result);
new_img.setAttribute("width", "100px");
new_img.setAttribute("height", "100px");
insertHtmlAtCaret(new_img);
});
} //粘贴文本
else if (
ele[i].kind === "string" &&
ele[i].type.indexOf("text/plain") != -1
) {
alert("只支持图片上传");
document.getElementById("pasteImg").innerText = "";
} else return;
}
} else {
alert("不支持的浏览器");
}
} //绑定粘贴事件
document.getElementById("pasteImg").onpaste = function () {
paste_img(event);
return false;
};
document.getElementById("btnGO").onclick = function () {
var imgs = document.getElementById("pasteImg").children;
for (let index = 0; index < imgs.length; index++) {
const element = imgs[index];
console.log(element.src);
}
};
function blobToDataURI(blob, callback) {
var reader = new FileReader();
reader.onload = function (e) {
callback(e.target.result);
};
reader.readAsDataURL(blob);
}
};
</script>
<script></script>