“刘郎已恨蓬山远,更隔蓬山一万重”
现在做的是从web端给眼镜端发送消息,其实就是web端把消息存到数据库,然后眼镜从数据库获取消息即可。现在在web端的输入框需要直接复制图片进去,于是就用上了富文本编辑器。
在研究了多个富文本编辑器后,基于免费、好用、简洁的原则(主要是基于免费),最终选择使用wangEditor。
使用场景
从Word中复制图片、文字、标题、部分带样式的文字到编辑器中。可实现取出文字和图片的功能,不包含Word上的样式,比如加粗、斜体等样式。
说明:以下内容均基于该使用场景。
使用方法
创建一个富文本编辑器:
var editorData = editor.txt.html();
获取编辑器的内容还有其他方式:
var editorData = editor.txt.text();
//或者
var editorData = editor.txt.getJSON();
具体参考文档:读取内容
editor.txt.html();
读取的内容都含有样式,(如果是通过通过Word粘贴进去的文本或图片,请看步骤6)比如p标签,img标签之类的,所以需要去除这些标签,直接把p标签里面的内容和img标签图片的base64编码取出来,用到正则表达式://获取编辑器的内容
var editorData = editor.txt.html();
//定义一个图片编码和文字的数组
var picArr = new Array();
var wordArr = new Array();
//获取图片编码的正则
var p = /([^<]*?)<\/p>/ig;
while(true){
var match = p.exec(editorData);
if(match){
//判断是否全是空格
if (!match[1].match(/^[ ]*$/)) {
wordArr.push(match[1]);
}
}else{
break;
}
}
直接可以用的JS代码:
function getEditorData(){
//处理富文本编辑器的数据
var picArr = new Array();
var editorData = editor.txt.html();
//处理Word复制过来的样式
editorData = cleanPastedHTML(editorData);
//获取图片
var p = /(.*?)
/ig;
while(true){
var match = p.exec(editorData);
if(match){
if (match[1] != '') {
wordArr.push(match[1]);
}
}else{
break;
}
}
//获取标题内容,因为Word中的标题,在富文本编辑器中获取出来都带或等
p = /(.*?)<\/h\d>/ig;
while(true){
var match = p.exec(editorData);
if(match){
//判断是否全是空格
if (!match[1].match(/^[ ]*$/)) {
wordArr.push(match[1]);
}
}else{
break;
}
}
//获取p标签中的文字
p = /([^<]*?)<\/p>/ig;
while(true){
var match = p.exec(editorData);
if(match){
//判断是否全是空格
if (!match[1].match(/^[ ]*$/)) {
wordArr.push(match[1]);
}
}else{
break;
}
}
}
//去掉Word复制过来的样式
function cleanPastedHTML(input) {
// 1. remove line breaks / Mso classes
var stringStripper = /(\n|\r| class=(")?Mso[a-zA-Z]+(")?)/g;
var output = input.replace(stringStripper, ' ');
// 2. strip Word generated HTML comments
var commentSripper = new RegExp('','g');
var output = output.replace(commentSripper, '');
var tagStripper = new RegExp('<(/)*(meta|link|span|\\?xml:|st1:|o:|font)(.*?)>','gi');
// 3. remove tags leave content if any
output = output.replace(tagStripper, '');
// 4. Remove everything in between and including tags '