由编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入)实现的富文本编辑器

转载请注明: TheViper http://www.cnblogs.com/TheViper 

大家都知道,如果只是大概的实现一个简单的富文本编辑器,直接用execCommand就可以了,虽然不同浏览器对execCommand命令的反应不一样,最后效果是差不多的。当然,如果要严谨的,用像ueditor那种只有很少部分实现是用execCommand的富文本编辑器。

昨天,本屌就试着用execCommand搞一个简单的编辑器。在本屌看来,什么字体加粗,斜体,下划线,对齐,列表。。直接用execCommand就可以搞定,至于保存草稿,编辑器全屏,,那些也很好搞定,另外,稍微难点的在原光标位置插入图片也在更简单的 编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入)里面说的很清楚了,开干。

容器 div contenteditable

然而理想是美好的,现实是残酷的,过程中遇到点坑。

1.插入的图片img标签display不能设置成block.有时候,为了消除低版本ie图片底部间距,可能会很干脆的把所有img的样式设置成display:block;.这样的后果是在ie8中,无法通过移动光标,或点击鼠标让光标到图片后面,在ie6,7中,同样无法通过移动光标让光标到图片后面,但可以点击鼠标做到。

其实可以看到就算光标可以移到图片后也没啥用,因为display:block的缘故,一输入马上就跳到下一行了。

ie8

ie7

ie6

2.如果按照更简单的 编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入)中的做法,在ie8中,光标移到图片前面后,无法重新移到图片后面,也无法通过鼠标点击解决。这个问题就严重了,因为有时候要在图片后面接着输字。

ie8

解决方法很简单,将原来的editor.insertImage("<img src=‘1.jpeg‘/>");后面加一个空格,变成editor.insertImage("<img src=‘1.jpeg‘/> ");。

修改后的ie8

3.列表ol,ul设置好,很多时候,在reset css里面将ol,ul的样式都删了。

4.在div contenteditable中使用execCommand。这个很坑爹,因为在现代浏览器中,即使选中文字,也无法通过execCommand操作。

比如firefox

解决方法在执行execCommand前,保存当前的selection.

                if(!!-[1,])//不是ie
                    editor.restoreSelection();
                document.execCommand(command,false,args);

5.在图标上添加属性unselectable="on",使图标无法获得焦点,selection.否则,ie中无法执行execCommand。

最后附上下载,同时感谢qq空间的编辑器图标sprite.

如果您觉得本文的内容对您有所帮助,您可以打赏我:

时间: 2024-11-05 06:25:40

由编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入)实现的富文本编辑器的相关文章

修正《更简单的 编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入)》中的一个问题

转载请注明: TheViper http://www.cnblogs.com/TheViper  以前写过一篇更简单的 编辑器从光标处插入图片(失去焦点后仍然可以在原位置插入),里面只测试了ie,事实上在firefox中有个小问题,就是不管插入图片前,编辑器有没有焦点(光标),在插入后,光标会消失. 插入前没有焦点 插入前有焦点 修正 function insertImage(html){ restoreSelection(); if(document.selection) currentRan

更简单的 iframe从光标处插入图片(失去焦点后仍然可以在原位置插入)

转载请注明: TheViper http://www.cnblogs.com/TheViper 前天晚上发现上一篇iframe从光标处插入图片(失去焦点后仍然可以在原位置插入里面的用法在ie6,7中无效,好悲催,当初只测试了ie8就以为在ie6,7上也没问题. 昨天在github上发现了一个很好的富文本编辑器wangEditor,一看名字就是中国人写的.这个编辑器好在支持ie6+,另外最重要的一点,它在ie6,7,8上都可以做到失去焦点后仍然可以在原位置插入图片,而且代码量很少.于是很好奇的看看

iframe从光标处插入图片(失去焦点后仍然可以在原位置插入)

转载请注明: TheViper http://www.cnblogs.com/TheViper  为什么会有这个需求? 当我们需要一个文本输入框(编辑器),它的功能定位介于专门的富文本编辑器和裸(原生)文本框之间.这时,如果用专门富文本编辑器,如kindeditor,ueditor,显的很大材小用,而且这两个的体积都不小,而体积小的富文本编辑器又是针对现代浏览器的. 贴吧发帖和知乎发问题的编辑器就是典型的这种需求 问题的出现 下面是这个问题的呈现,ie8下,知乎编辑器中插入图片 首先将光标移到已

react引入富文本编辑器TinyMCE

这周做了一个PC端的service后台需求,要求有富文本编辑器,插入图片.表格,字体字号背景色等等, 最后引入了富文本编辑器TinyMCE 对于TinyMCE的简介: TinyMCE是一款易用.且功能强大的所见即所得的富文本编辑器.同类程序有:UEditor.Kindeditor.Simditor.CKEditor.wangEditor.Suneditor.froala等等. TinyMCE的优势: 开源可商用,基于LGPL2.1 插件丰富,自带插件基本涵盖日常所需功能 接口丰富,可扩展性强,有

vue项目富文本编辑器vue-quill-editor之自定义图片上传

使用富文本编辑器的第一步肯定是先安装依赖 npm i vue-quill-editor 1.如果按照官网富文本编辑器中的图片上传是将图片转为base64格式的,如果需要上传图片到自己的服务器,需要修改配置. 创建一个quill-config.js的文件,里面写自定义图片上传.代码如下 /*富文本编辑图片上传配置*/ const uploadConfig = { action: '', // 必填参数 图片上传地址 methods: 'POST', // 必填参数 图片上传方式 token: ''

富文本编辑器小记 — 关于撤销、重做操作

关于富文本编辑器,真的是“非诚勿扰”啊! 关于富文本编辑器,IE一套,Firefox一套,W3C标准一套,so,作为前端,你懂的! 关于富文本编辑器,初入前端的童鞋不推荐自行实现,绕道UEditor吧! 关于富文本编辑器,几套标准又怎样,还有markdown呢,自行百度吧,反正我没啥兴趣! 花满楼的小站,作为我前端路上的试炼场,编辑器这里面的黑魔法,我当然也打算自己试着走一遭看看:小试一下后的第二个版本是这个样子的: 如上图,除了样子好看点,功能基本能用,说实话,在IE盛行的大环境下,我不敢拿出

Simditor 富文本编辑器多选图片上传、视频连接插入

simditor 是一个基于浏览器的所见即所得的文本编辑器.Simditor 富文本编辑器, 支持多选图片上传, 视频连接插入, HTML代码编辑以及常用富文本按钮,支持的浏览器:IE10.Firefox.Safari. 点击这里下载zip文件.你也可以安装 Simditor bower 和 npm: $ npm install simditor $ bower install simditor 在 项目中使用 simditor 导入 simditor 样式文件和 js 文件 <link rel

Ueditor1.4.3.3 富文本编辑器在图片不显示问题

最近在项目中碰倒一个需求,需要一个富文本来编辑一个一篇报告,于是乎百度了一下找到一个百度的 ueditor  富文本编辑器,由于帮助文档相比而言比较容易看懂,所以就选用了这个,但是也遇到了一些问题 好了  不废话  直接上代码: 此项目是javaEE  项目 首先在  官网下载  所需的文件   http://ueditor.baidu.com/website/download.html     依个人项目而定 将项目下载下来的文件解压放入webconte 目录下: 接下来看 JSP代码:初始化

使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码

富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百度开发的插件,lite版是UM EasyUI编辑器:用easyUI的都懂,基本上肯定用到 其他的富文本编辑器就不说了,前两个小编我用的比较多 本来我是比较倾向于CKEditor,但是这个插件不支持图片上传,图片功能只能链接过去,而不能在控件本身中上传,所以就选择了UMeditor 为啥选择UM,不选