手机
当前位置:查字典教程网 >编程开发 >网页编辑器 >一款支持插入表情的编辑器实现代码(简单思路挺重要)
一款支持插入表情的编辑器实现代码(简单思路挺重要)
摘要:下面是一个表情列表,为了简单我直接在li里面放图片的文件名称,而class属性用来存放对应的标记复制代码代码如下:0.gif1.gif2.g...

下面是一个表情列表,为了简单我直接在li里面放图片的文件名称,而class 属性用来存放对应的标记

复制代码 代码如下:

<ul id="faceList">

<li>0.gif</li>

<li>1.gif</li>

<li>2.gif</li>

</ul>

接下来把上面的 li 变成 img

复制代码 代码如下:

var faceDir = "images/"; //配置表情目录

var iframeDocument = null;

var iframeWindow = null;

var isIe = false;

$.each($("#faceList>li"), function(){ //展现表情

var node = document.createElement("img");

node.className = $(this).attr("class");

node.src = faceDir+$(this).html();

this.innerHTML = "";

this.appendChild(node);

});

放一个 iframe 用来做编辑器

复制代码 代码如下:

<iframe id="Edit" frameborder="0"></iframe>

先得到 ifame

复制代码 代码如下:

iframeWindow = document.getElementById("Edit").contentWindow;iframeDocument = document.getElementById("Edit").contentWindow.document; iframeDocument.designMode="On"; //打开iframe 编辑模式

.designMode="On"; 这个方法还是蛮常见的。 刚开始做的时候还想用 textarea 但是textarea不能显示图片。这里在实际过程中发现与 textarea 的一个差异,iframe 内不会自己换行,所以为iframe 添加了一个body设置了一个word-wrap属性

复制代码 代码如下:

iframeDocument.write("<html><body></body></html>");

下面实现,在iframe 插入图片表情的过程(代码内有注释)

复制代码 代码如下:

$("#faceList>li").click(function(){

var $this = $(this);

var $thisImg = $(this).find("img:eq(0)"); //当前点击的表情(IMG标记)

document.getElementById("Edit").contentWindow.focus(); //使编辑区域得到焦点

var r = null;

if(document.selection) //处理兼容性问题

{

//把表情放入iframe

r = iframeDocument.selection.createRange();

iframeDocument.selection.empty();

r.pasteHTML($thisImg[0].parentNode.innerHTML.toString());

}

else if(window.getSelection)

{

r = iframeWindow.getSelection().getRangeAt(0);

iframeWindow.getSelection().removeAllRanges();

var node = document.createElement("img");

node.className = $thisImg.attr("class");

node.src = $thisImg.attr("src");

r.surroundContents(node);

}

});

到这里,就完成了插入表情的过程。还有最后一件事情:翻译img 标记

复制代码 代码如下:

function GeteEditData()

{

var edit = iframeDocument.getElementsByTagName("body")[0].innerHTML;

//在内存中Copy一个该节点副本,以保全文档流格式

var str = new String(edit);

var $content = $("<div>"+str+"</div>");

var imgNode = $("#faceList img");

$.each(imgNode, function(){

var mark= "/:"+$(this).attr("class").toString();

var fs = $content.find("."+$(this).attr("class").toString());

if(fs!=null&&fs[0]!=undefined)

{

fs.replaceWith(mark);

}

});

}

其实还有很多问题没有处理,俺也只是一知半解。把代码贴出来希望能帮助一些朋友解决问题。

【一款支持插入表情的编辑器实现代码(简单思路挺重要)】相关文章:

FCKEditor常用Js代码,获取FCK内容,统计FCK字数,向FCK写入指定代码

让IE8和IE9支持eWebEditor在线编辑器的方法

autogrow 让FCKeditor高度随内容增加的插件

KindEditor 4.x 在线编辑器常用方法小结

百度编辑器ueditor前台代码高亮无法自动换行解决方法

xheditor所见即所得文本编辑器(代码高亮显示修改)

使用ZeroClipboard解决跨浏览器复制到剪贴板的问题

ueditor编辑器不能上传图片问题的解决方法

百度UEditor编辑器使用教程与使用方法(图文)

DISCUZ论坛的UBB编辑器(增加灵活调用,支持ASP)

精品推荐
分类导航