让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」

让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」让Web页面中的编辑器支持黏贴或直接拖拽来添加图片

大家好,又见面了,我是你们的朋友全栈君。

基本原理是将剪贴板中的图片二进制数据转为Base64编码

代码:

让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」
让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」

 1 <html>  2 <head>  3 </head>  4 <body>  5 <script src="http://cdn.bootcss.com/jquery/1.9.0/jquery.js">  6 </script>  7  8 <div id="edit" contenteditable="true" style="width:400px;height:400px;border:1px solid #f00">  9  10 </div>  11  12 <script>  13 function Edit( editEl ) {  14  editEl = $(editEl);  15  16  $(editEl).bind("paste", clipFn);  17  18 function clipFn(ev) {  19  20 //把剪贴板中的img通过canvas中专为base64字符串;  21 var canvas = document.createElement("canvas");  22 var context = canvas.getContext("2d");  23  24 //从word拷贝时候会得到text/html数据;  25 var html = $(ev.originalEvent.clipboardData.getData("text/html"));  26  html.find("img").each(function () {  27  28 var img = document.createElement("img");  29 var src = $(this).attr("src");  30 //.replace(/\\/gi,"\/");  31 var _this = this;  32  img.src = src;  33  34  img.onload = function () {  35  canvas.width = img.width;  36  canvas.height = img.height;  37  context.drawImage(img, 0, 0, img.width, img.height);  38 var dataBase64 = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");  39  $("img").each(function (index, el) {  40 //匹配图片;  41 if ($(this).attr("src").replace(/[\/\\]/g,"") === src.replace(/[\/\\]/g,"")) {  42  el.src = dataBase64;  43  }  44  ;  45  }  46  );  47  48  img.onerror = function() {  49  console.log("图片加载失败");  50  }  51  ;  52  53  img.onload = null;  54  }  55  ;  56  57  }  58  );  59  60 //如果通过截图或者复制图片的方式会得到 type为"imgage"的图片;  61 var ele = ev.originalEvent.clipboardData.items;  62 for (var i = 0; i < ele.length; ++i) {  63 if ( ele[i].kind == 'file' && ele[i].type.indexOf('image/') !== -1 ) {  64  65 var blob = ele[i].getAsFile();  66  readBlobAsDataURL(blob, function( base64 ) {  67  68 var img= document.createElement('img');  69  img.setAttribute('src', base64);  70  71  editEl.append(img);  72  ;  73  }  74  );  75 //阻止默认事件, 避免重复添加;  76  ev.originalEvent.preventDefault();  77  }  78  ;  79  }  80  ;  81  }  82  ;  83  84 //绑定拖拽事件  85 //要给个响应  86  editEl.bind("dragover", function() {  87 return false;  88  }  89  );  90  91 //触发事件的响应  92  editEl.bind("drop", function(ev) {  93  loadImage( ev.originalEvent.dataTransfer.files[0] , function( result ) {  94  editEl.append( "<img src="+result+" />" );  95  }  96  );  97 return false;  98  }  99  ); 100 101 // 加载 图像文件(url路径) 102 function loadImage(src, callback){ 103 // 过滤掉 非 image 类型的文件 104 if(!src.type.match(/image.*/)){ 105 if(window.console){ 106  console.log("选择的文件类型不是图片: ", src.type); 107  } 108 else { 109  window.confirm("只能选择图片文件"); 110  } 111 return; 112  } 113 114 // 创建 FileReader 对象 并调用 render 函数来完成渲染. 115 var reader = new FileReader(); 116 // 绑定load事件自动回调函数 117  reader.onload = function(e){ 118 // 调用前面的 render 函数 119  callback(e.target.result); 120  } 121  ; 122 // 读取文件内容 123  reader.readAsDataURL(src); 124  } 125  ; 126 127 function readBlobAsDataURL(blob, callback) { 128 var a = new FileReader(); 129  a.onload = function(e) { 130  callback(e.target.result); 131  }; 132  a.readAsDataURL(blob); 133  } 134  ; 135  } 136  ; 137 </script> 138 139 <script> 140 new Edit("#edit"); 141 </script> 142 </body> 143 </html>

View Code

参考资料:

让编辑器支持word的复制黏贴,支持截屏的黏贴

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107088.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 推荐算法中的MF, PMF, BPMF[通俗易懂]

    推荐算法中的MF, PMF, BPMF[通俗易懂]1.矩阵分解(MF)目前推荐系统中用的最多的就是矩阵分解方法,在NetflixPrize推荐系统大赛中取得突出效果。以用户-项目评分矩阵为例,矩阵分解就是预测出评分矩阵中的缺失值,然后根据预测值以某种方式向用户推荐。常见的矩阵分解方法有基本矩阵分解(basicMF),正则化矩阵分解)(RegularizedMF),基于概率的矩阵分解(PMF)等。利用代数中SVD方法对矩阵进行分解。奇异值

  • android 资源图片加密

    android 资源图片加密android中有些重要的图片资源可以选择加密,因为不管是加固还是混淆,资源文件的图片始终能被看到,加密图片步骤1. 创建java项目安作为加密图片的工具,新建一个project,在main方法里调用加密方法,加密方法里传一个路劲,这个路劲是电脑里图片的路劲publicstaticvoidmain(String[]args){//调用加密方法KMD

  • Linux下文件搜索、查找、查看命令

    Linux下文件搜索、查找、查看命令Linux下文件搜索、查找、查看命令1、最强大的搜索命令:find一、根据文件或目录名称搜索二、根据文件大小搜索三、根据所有者和所属组搜索四、根据时间属性搜索五、根据文件类型或i节点搜索六、组合条件搜索  2、在文件资料中查找文件:locate  3、搜索命令所在的目录及别名信息:which 4、搜索命令所在的目录及帮助文档路径:whereis5、在文件…

  • 机器学习之朴素贝叶斯分类算法

    机器学习之朴素贝叶斯分类算法一、数学知识相关1.独立事件–前提2.条件概率3.全概率公式4.贝叶斯公式5.朴素贝叶斯公式其中:P(A)叫做A事件的先验概率,即一般情况下,认为A发生的概率。 P(B|A)叫做似然度,是A假设条件成立的情况下发生B的概率。 P(A|B)叫做后验概率,在B发生的情况下发生A的概率,也就是要求的概率。P(B)叫做标准化常量,即在一般情况下,认为B…

    2022年10月15日
  • oracle查看表字段类型_oracle更改表字段类型

    oracle查看表字段类型_oracle更改表字段类型查看oracle中的表的字段类型的sql:selectCOLUMN_NAME,DATE_TYPE,DATA_LENGTH,DATA_PRECISIONfromall_tab_columns

  • IIS设置ISAPI筛选器Rewrite组件防盗链(防盗链可以节省流量,提高性能)

    IIS设置ISAPI筛选器Rewrite组件防盗链(防盗链可以节省流量,提高性能)如何在IIS的设置下添加ISAPI筛选器里的Rewrite组件,防止图片被盗用链接。首先笔者要说的是“盗链”很常见的现象,虽然没有采集那么“流行”,但是对于被盗者来说,碰到这事还真的及时解决,要不资源的消耗很可能会影响自身网站的正常运营。那究竟什么是盗链,怎样防止网站的信息被盗链呢?下面简单的说下:“盗链”的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号