一款支持插入表情的编辑器实现代码(简单思路挺重要)_网页编辑器

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

复制代码 代码如下:

<ul id="faceList">
<li class="wx">0.gif</li>
<li class="pz">1.gif</li>
<li class="se">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 style=\"word-wrap:break-word;text-align: left; background-color: #fff; border:1px solid #CCC; margin:0px; padding:0px;overflow:hidden;\"></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);
}
});
}

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

时间: 2024-12-02 18:46:15

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

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

我们在做网站的时候,网站后台系统一般都会用到web编辑器,今天笔者就给大家推荐一款百度UEditor编辑器.关于这款百度UEditor编辑器官网上也有简单的教程,不过看着比较费劲,今天笔者就跟大家分享一下百度UEditor编辑器使用教程与使用方法,希望对大家有所帮助. 第一:百度UEditor编辑器的官方下载地址 ueditor 官方地址:http://ueditor.baidu.com/website/index.html 开发文档地址:http://ueditor.baidu.com/web

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

ueditor是百度编辑器,在本地的iis环境是可以上传图片了,但放在服务器的iis环境无法上传图片了,经过搜索发现是iis设置问题,引起这个问题的主要原因是,大多数虚拟主机不会给IIS匿名账号访问磁盘上的非用户目录,连读取的权限都没有,既然我们不能解决iis问题只有从代码设置了,具体如下. 在上传不了图片时,可以用浏览器的自带的调试工具查看报错,你可以看一个"拒绝访问或文件已存在"的错误.仔细调试分析,终于找到问题所在. 在它的upload.class.asp中,有如下一个函数: P

ckeditor syntaxhighlighter代码高亮插件配置分享_网页编辑器

最近由于自己想做一个网站形式的代码库,自已写一个在线文本编辑器,对于现在的我来,确实是很不切实际,呵呵!再说了,现在有一个非常好的在线文本编辑器(ckeditor)了,我和必再去费这等功夫呢!有现成的,拿过用就是的呗!正所谓的拿来主义!不过这个在线文本编辑器,对于我们程序员来说有一个算是缺陷吧!没有代码高亮的功能!这样把代码贴上去,很不好看!今天晚上,我总是把他给弄出来了.当然也采在别人的肩膀上做成的.在此感谢他们的分享!费话不多说了!咱们进入正题吧! 首先去官方网站下载个ckeditor 其次

Html 编辑器粘贴内容过滤技术详解_网页编辑器

作者:Tony Qu 最近在解决数据粘贴方面取得了不少进展,作为Html在线编辑器所必须具备的技术,在这里详细给大家介绍并提供实现参考.在研究过程中,我也确实走了不少弯路,尝试了n种方式,由于美国的PM始终觉得有些影响用户体验的东西无法接受,导致好几个提案被否定,不过收获还是很丰富的. 我现在写code喜欢需求驱动,让我们来看看这项技术的主要需求 * 能够过滤用户贴进来的纯文本数据 * 能够过滤用户贴进来的html数据(未经Html编码) * 能够过滤用户贴进来的Word数据,并能把大部分Wor

UEditor 编辑器跨域上传解决方法_网页编辑器

解决的方法: 1.在 ueditor\dialogs\internal.js 加入 document.domain = '根域名'; 2.在当前页面同样指定根域名: 复制代码 代码如下: <script type="text/javascript">    document.domain = "根域名";</script> 这样在 chrome.firefox 下没有问题,但在 ie 下还需要简单修改下 UEditor,在 editor.js

fckeditor编辑器在php中的配置方法_网页编辑器

一:修改文件上传语言为PHP 打开fckconfig.js 找到: var _FileBrowserLanguage = 'asp' var _QuickUploadLanguage = 'asp' 改成: var _FileBrowserLanguage = 'php' var _QuickUploadLanguage = 'php' 二:启用PHP文件上传 1:启用FileBrowser: 打开fckeditor/editor/filemanager/connectors/php/confi

FCKeditor 和 SyntaxHighlighter 代码高亮插件的整合_网页编辑器

Introduction(简介) This is a dialog-based plugin to handle formatting of source code for FCKeditor 2.5.x. It WON'T work with the new CKEditor (yet).(CKEditor 是FCKEditor 的升级版,不过,SyntaxHighlighter 还不能在 CKEditor 中实现代码高亮) It makes use of the SyntaxHighligh

CKEditor/FCKEditor 使用FCKeditor 2.6.5 快速使用教程(含插入图片)_网页编辑器

其开源协议是基于 GPL, LGPL 和 MPL 的.官方网站:http://ckeditor.com/ 一般来说,我们在编辑内容时,先是读入到 textarea,再将 textarea 的内容赋给编辑器.因为直接把内容作为字符串给编辑器的 Value 属性赋值使用的是 JavaScript 代码,要让 JS 代码不受内容中双引号.换行等的干扰,只有先读入到 textarea 最方便. 使用 FCKeditor 2.6.5 复制代码 代码如下: <div><textarea id=&qu

FCKeditor 网页在线编辑器的使用方法_网页编辑器

它不需要安装任何形式的客户端,兼容绝大多数主流浏览器,支持ASP.Net.ASP.ColdFusion .PHP.Jsp.Active-FoxPro.Lasso.Perl.ython 等编程环境. 官方网站 http://www.fckeditor.net/ 官方文档 http://wiki.fckeditor.net/ 下载地址 http://www.fckeditor.net/download/default.html FCKeditor安装和配置 下载FCKeditor2.63.zip和F