在线编辑器的实现原理(兼容IE和FireFox)


Posted in Javascript onMarch 09, 2007

在线编辑器在我们日常的项目开发中非常有用(如新闻系统),它可以方便地实现文章的在线编辑,省掉了FrontPage等工具。那么是怎样实现浏览器在线编辑功能的呢?  首先需要IE的支持,在IE5.5以后就有一个编辑状态. 就是利用这个编辑状态,然后用javascript来控制在线编辑的。 
     首先要有一个编辑框,这个编辑框其实就是一个可编辑状态的网页, 我们用iframe来建立编辑框。
     <IFRAME id=“HtmlEdit” style="WIDTH: 100%; HEIGHT: 296px" marginWidth=“0” marginHeight=“0”></IFRAME> 
     并且在加上javascript代码来指定HtmlEdit有编辑功能(下面提供完整的原代码):

<script language="javascript"> 
     var editor; 
     editor = document.getElementById("HtmlEdit").contentWindow;      //只需键入以下设定,iframe立刻变成编辑器。 
     editor.document.designMode = 'On'; 
     editor.document.contentEditable = true; 
     //但是IE与FireFox有点不同,为了兼容FireFox,所以必须创建一个新的document。 
     editor.document.open(); 
     editor.document.writeln('<html><body></body></html>'); 
     editor.document.close(); 
     //字体特效 - 加粗方法一  
     function addBold() 
     { 
     editor.focus(); 
     //所有字体特效只是使用execComman()就能完成。 
     editor.document.execCommand("Bold", false, null); 
     } 
     //字体特效 - 加粗方法二  
     function addBold() 
     { 
     editor.focus(); 
     //获得选取的焦点 
     var sel = editor.document.selection.createRange(); 
     insertHTML("<b>"+sel.text+"</b>"); 
     } 
     function insertHTML(html) 
     { 
         if (editor.document.selection.type.toLowerCase() != "none") 
         { 
         editor.document.selection.clear() ; 
         } 
         editor.document.selection.createRange().pasteHTML(html) ;  
     } 
  </script>
Javascript 相关文章推荐
JS中confirm,alert,prompt函数区别分析
Jan 17 Javascript
js禁止小键盘输入数字功能代码
Aug 01 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
深入理解jQuery中live与bind方法的区别
Dec 18 Javascript
jQuery实现跟随鼠标运动图层效果的方法
Feb 02 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
May 17 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
May 03 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
Vue开发Html5微信公众号的步骤
Apr 11 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 Javascript
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 Javascript
超级兔子让浮动层消失的前因后果
Mar 09 #Javascript
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 #Javascript
javascript的对话框详解与参数
Mar 08 #Javascript
打开超链需要“确认”对话框的方法
Mar 08 #Javascript
javascript学习随笔(使用window和frame)的技巧
Mar 08 #Javascript
关于使用runtimeStyle属性问题讨论文章
Mar 08 #Javascript
用js判断用户浏览器是否是XP SP2的IE6
Mar 08 #Javascript
You might like
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
python绘制热力图heatmap
2020/03/23 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
详解Python中import机制
2020/09/11 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
采购主管岗位职责
2014/02/01 职场文书
文明寝室标语
2014/06/13 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
人事任命通知书
2015/04/21 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python