web前端socket聊天室功能和在线编辑器上传编辑内容的时候经常会需要上传一些图文信息,但是很多编辑器不支持截图粘粘的功能,这里参考了网友分享的可用方法做一个记录。

 <html>
<head>
<title>截图粘粘</title>
<style type='text/css'>
#editable {
width: 600px;
height: 400px;
border: 1px dashed red;
}
</style>
<script type="text/javascript">
window.onload = function () {
function paste_img(e) {
if (e.clipboardData.items) {
var 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();
window.URL = window.URL || window.webkitURL;
var blobUrl = window.URL.createObjectURL(blob);
var new_img = document.createElement('img');
convertImgToBase64(blobUrl, function(base64Img){
new_img.setAttribute('src', base64Img);
document.getElementById('editable').appendChild(new_img);
});
}
}
} else {
alert('您的浏览器不支持粘贴图片功能,请换更高版本浏览器.');
}
}
document.getElementById('editable').onpaste = function () {
paste_img(event);
return false;
};
}
function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
} //方法2 图片转base64 body监听粘贴
$('body').on('paste', function(e){
alert('1212');
var clipboard = e.clipboardData;
var type = clipboard.items[0].type;
alert('-=-=-');
if (type.match(/image/)) {
var blob = clipboard.items[0].getAsFile();
var file = new FileReader();
file.on('loadend', function(e){
alert(e.target.result);
console.log('image',e.target.result);
});
file.readAsDataURL(blob);
} else {
alert(type);
console.log('not an image',type);
}
});
</script>
</head>
<body>
<div id="editable" contenteditable="true">
</div>
</body>
</html>

最新文章

  1. easyUI的基础布局
  2. 微信小程序之使用weui.wxss(八)
  3. struts标签
  4. Swift基础语法(五)枚举、结构体与类的区别
  5. 删除div
  6. Magicodes.WeiChat——多租户的设计与实现
  7. vi及缩进设置
  8. 通过Response.Flush()实现IE下载失败的问题
  9. Windows Phone开发(27):隔离存储A
  10. es6+require混合开发,兼容es6 module,import,export
  11. Asp.Net Core 2.0 之旅---在Ubuntu上部署WEB应用程序
  12. jndi通俗理解以及它的指令缺陷
  13. 使用Entity Framework Core访问数据库(Oracle篇)
  14. 大名鼎鼎的Requests库用了什么编码风格?
  15. JAVA进阶11
  16. redis集群创建
  17. 【MySQL】MySQL之MySQL常用的函数方法
  18. jfinal的model和record如何相互转化?
  19. nodejs基础 -- 交互式解析器(REPL)
  20. mac os 平台下载并编译android2.3.3源码

热门文章

  1. SQL 出现18456
  2. 架构蓝图--软件架构 &quot;4+1&quot; 视图模型
  3. Laravel 教程 - 实战 iBrand 开源电商 API 系统
  4. 创建Spark镜像文件
  5. zan-framework mysql连接
  6. android Listview 软引用SoftReference异步加载图片
  7. C++11之 Move semantics(移动语义)(转)
  8. ACM-ICPC(11/9)
  9. luogu P2424 约数和
  10. 解决:Visual Studio 启动就报错退出