js 实现复制粘贴文本过滤(保留文字和图片)
实现复制粘贴文本过滤(保留文字和图片)
demo如下:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<base href=""/>
<style type="text/css">
</style>
</head>
<body>
<div id="conversation-content" contenteditable="true" style="width:500px;height:300px;background:#f00;"> </div>
</body>
</html>
<script src="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
function filterHtml(str,callback){
var s = '';
var imgWidth = 200;
var d = str.replace(/( )/ig,'');//先过滤空格
var sd = d.replace(/<br([^<>]+|\s?)>/ig,'||||');//替换br标签
var div = document.createElement('div');
div.id = 'cache_Id';
div.style.display = 'none';
div.innerHTML = sd;
document.body.appendChild(div);
var dssD = document.getElementById('cache_Id');
var text = dssD.innerText;//过滤html标签
text = text.replace(/\|\|\|\|/g,'<br>');//还原br
var imagesCount = 0;
try{
var temp = '';
var img = dssD.getElementsByTagName('img');
if(img.length > 0){
for(var i=0;i<img.length;i++){
var imgObj = new Image();
imgObj.onload = function(){
imagesCount++;
var w = this.width;
var h = this.height;
if(w > imgWidth){
temp += '<img src="'+ this.src +'" width="'+ imgWidth +'" /><br>';
}else{
temp += '<img src="'+ this.src +'" width="'+ w +'" /><br>';
}
if(imagesCount == img.length){
text+=temp;
s = text;
var n = document.getElementById('cache_Id');
if(n && n.parentNode && n.tagName != 'BODY'){
n.parentNode.removeChild(n);
}
if(callback){
callback(s);
}
}
}
imgObj.onerror = onabort = function(){
console.log(imagesCount);
imagesCount++;
if(imagesCount == img.length){
s = text;
var n = document.getElementById('cache_Id');
if(n && n.parentNode && n.tagName != 'BODY'){
n.parentNode.removeChild(n);
}
if(callback){
callback(s);
}
}
}
imgObj.src = img[i].src;
}
}else{
s = text;
var n = document.getElementById('cache_Id');
if(n && n.parentNode && n.tagName != 'BODY'){
n.parentNode.removeChild(n);
}
if(callback){
callback(s);
}
}
}catch(e){
console.log(e);
}
}
$('#conversation-content')[0].onpaste = function(){
console.log(1);
setTimeout(function(){
filterHtml($('#conversation-content').html(),function(str){
$('#conversation-content').html(str);
});
},300);
}
</script>
js 实现复制粘贴文本过滤(保留文字和图片)的更多相关文章
- js 实现复制粘贴
js 实现复制粘贴 <!DOCTYPE html> <html><head> <meta http-equiv="Content-Type" ...
- js实现复制粘贴功能
在项目中使用到复制粘贴功能,虽然网上有很多大牛封装了很多的插件,但是还是想不去使用插件,就像自己来实现这个功能. 另一篇是禁止复制粘贴 前端er怎样操作剪切复制以及禁止复制+破解等 初步想法: 1. ...
- 通过如何通过js实现复制粘贴功能
在ie中window.clipboardData(剪切板对象)是可以被获取,所以利用这个方法我们可以实现在IE当中复制粘贴的功能,demo如下! <html> <head> & ...
- ueditor编辑文章时候,复制粘贴内容,原来的图片不能显示
ueditor编辑文章时候.当现有文章有图片的时候, 再复制粘贴文本进去的时候.里面的图片就不能显示了, 编辑器查看文章Html代码,图片路径显示为:src="http://localhos ...
- 在html页面通过js实现复制粘贴功能
前言:要实现这个功能,常用的方式大概分为两类,第一种就是上插件,这个网上有大把,第二种就是直接用几行JS来实现. 这次说第二种实现方式,这方式有很大的局限性,只能用表单元素,并且不能设置disable ...
- JS ----实现复制粘贴功能 (剪切板应用clipboardData)
注意:ie7,与ie8 对网页有个复制的权限,需在“安全”中的“自定义级别”的脚本中设置 clipboardData 对象 提供了对剪贴板的访问. 三个方法 :1.clearData(sDataFor ...
- js实现复制粘贴
项目中经常会遇到点击按钮复制订单号.订单id等内容到粘贴板中的需求.可是通常我们都是用Ctrl + c或右击复制的,别操心,js也是有复制命令的,那就是document.execCommand('co ...
- [JavaScript] 怎么使用JS禁止复制粘贴
1. 将彻底屏蔽鼠标右键,其实是禁止快捷菜单,因为不光右键可以弹出这个菜单,键盘上空格键右边的windows键也可以激活这个快捷菜单 <table border oncontextmenu=re ...
- js 实现复制粘贴时注意方法中需要两次点击实现的bug
方法一:利用ZeroClipboard 详见 :http://www.jb51.net/article/22403.htm 1先引入 <script type="text/javasc ...
随机推荐
- 网络语音视频技术浅议 Visual Studio 2010(转)
我们在开发实践中常常会涉及到网络语音视频技术.诸如即时通讯.视频会议.远程医疗.远程教育.网络监控等等,这些网络多媒体应用系统都离不开网络语音视频技术.本人才疏学浅,对于网络语音视频技术也仅仅是略知皮 ...
- python 3.4.0 简单的print 'hello world',出错--SyntaxError: invalid syntax
问题描写叙述: win7下安装的python 3.4.0版本号, 在命令行里写入简单的输出语句: print 'hello world' 然后enter,结果返回结果为: SyntaxError: i ...
- 你的Java代码对JIT编译友好么?(转)
JIT编译器是Java虚拟机(以下简称JVM)中效率最高并且最重要的组成部分之一.但是很多的程序并没有充分利用JIT的高性能优化能力,很多开发者甚至也并不清楚他们的程序有效利用JIT的程度. 在本文中 ...
- Android复制WIN8点击下沉倾斜系统瓷砖效果
※效果 ※使用说明 Java代码 import android.app.Activity; import android.os.Bundle; import android.widget.Toast; ...
- jvm对大对象分配内存的特殊处理(转)
前段日子在和leader交流技术的时候,偶然听到jvm在分配内存空间给大对象时,如果young区空间不足会直接在old区切一块过去.对于这个结论很好奇,也比较怀疑,所以就上网搜了下,发现还真有这么回事 ...
- js中document.write()使用方法
<script> var hrf = window.location.href; if(hrf.indexOf('change')>0){ ...
- NSOJ 飞船汇合(经典)
一支分散的飞船舰队,需要汇合到主舰,但是这种飞船在太空中飞行的耗油与质量没有关系,只与发动机打开的时间有关系,为了节省油量,指挥官通知,汇合途中,多台飞船可以串成串飞行,这样只需启动一台发动机,由于安 ...
- jquery选择器中逗号的使用
1.多条件选择器 多条件选择器:$("p,div,span.menuitem"),同时选择p标签,div标签,和拥有menuitem样式的span标签元素 <table id ...
- do...while(0)神奇
1. do...while(0)消除goto语句. 通常,假设在一个函数中開始要分配一些资源.然后在中途运行过程中假设遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样: version ...
- vim_编码配置文件_utf8乱码解决
1:简化步奏 调整 :vimrc的脚本配置 编辑~/.vimrc文件,(没有的话新建个)加上如下几行: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb23 ...