HTML编辑器的制作方法
来源:互联网 发布:linux deploy kali VNC 编辑:程序博客网 时间:2024/04/20 15:10
HTML编辑器让用户可以像word一般操作文档,所见即所得,网上已经有很多了,而且别人专门做的,功能比较好比较全还有不断的维护更新,还有相应的开发文档,
如 KindEditor [ http://www.kindsoft.net/ ] 等;
了解HTML编辑器的制作原理有助于开发和使用,所以下面看看制作一个简易的HTML编辑器的过程;
1,需要有一个可编辑同时又可显效果的编辑框。textarea还不能满足要求,它只能用来输入纯文本,不能显示颜色、斜体之类的文字样式,其功能就像记事本。这里用到iframe来实现,修改iframe的designMode属性为 on 使其可以被编辑。
<iframe id="myEditer" name="myEditer" width="100%" height="200px"></iframe>
<script>myEditer.document.designMode = 'on';</script>
这样即可在这个iframe区域里写和编辑内容了;注意这里直接通过name属性值访问该iframe对象,通过getElementById(xID)得到的对象反而不起作用,如: document.getElementById("myEditer").document.designMode='on'; //不起作用
2,在内容编辑器框选中相应内容进行样式编辑。在文字编辑器中编辑一段内容样式时,一般是先输入内容,接着是选中即将编辑的内容,最后编辑样式,如加粗,修改颜色等。编辑器这里的原理一样,内容输入,选中编辑的内容,对选中内容应用样式,这里关键有几个地方:
(1)如何兼容各浏览器获取选中的内容,看浏览器是否支持 window.getSelection[取文本window.getSelection()],document.getSelection[取文本document.getSelection()],document.selection[取文本document.selection.createRange().text],有时结合用selectionStart,selectionEnd属性和substr函数对值处理得到文本[参考: http://blog.csdn.net/coderq/article/details/7265370]
(2)如果应用样式,其实就是对选择的内容添加合适的HTML元素使其变成需要的效果,实现方法有多种,可用使用replace等方法处理,还有通过selection.createRange()返回的是一个文本对象,设为objSeleTXT,该对象有execCommand()方法,执行对应的方法即可完成相应的样式编辑,如加粗: objSeleTXT.execCommand("Bold");此外还有如
字体--宋体、黑体、楷体等, execCommand("fontname","",字体);字号--字号大小,execCommand("fontsize","",字号);加重, execCommand("Bold");斜体,execCommand("Italic");下划线, execCommand("Underline");删除线, execCommand("StrikeThrough"); 居左, execCommand("JustifyLeft"); 居右, execCommand("JustifyRight");居中, execCommand("JustifyCenter");剪切, execCommand("Cut"); 拷贝, execCommand("Copy");粘贴, execCommand("Paste");取消操作--IE5.0以后可以无限取消, execCommand("Undo"); 重复操作, execCommand("Redo"); 等
(3)光标位置的获取等
例如:
到此一个建议的HTML编辑器已经完成了。
如 KindEditor [ http://www.kindsoft.net/ ] 等;
了解HTML编辑器的制作原理有助于开发和使用,所以下面看看制作一个简易的HTML编辑器的过程;
1,需要有一个可编辑同时又可显效果的编辑框。textarea还不能满足要求,它只能用来输入纯文本,不能显示颜色、斜体之类的文字样式,其功能就像记事本。这里用到iframe来实现,修改iframe的designMode属性为 on 使其可以被编辑。
<iframe id="myEditer" name="myEditer" width="100%" height="200px"></iframe>
<script>myEditer.document.designMode = 'on';</script>
这样即可在这个iframe区域里写和编辑内容了;注意这里直接通过name属性值访问该iframe对象,通过getElementById(xID)得到的对象反而不起作用,如: document.getElementById("myEditer").document.designMode='on'; //不起作用
2,在内容编辑器框选中相应内容进行样式编辑。在文字编辑器中编辑一段内容样式时,一般是先输入内容,接着是选中即将编辑的内容,最后编辑样式,如加粗,修改颜色等。编辑器这里的原理一样,内容输入,选中编辑的内容,对选中内容应用样式,这里关键有几个地方:
(1)如何兼容各浏览器获取选中的内容,看浏览器是否支持 window.getSelection[取文本window.getSelection()],document.getSelection[取文本document.getSelection()],document.selection[取文本document.selection.createRange().text],有时结合用selectionStart,selectionEnd属性和substr函数对值处理得到文本[参考: http://blog.csdn.net/coderq/article/details/7265370]
(2)如果应用样式,其实就是对选择的内容添加合适的HTML元素使其变成需要的效果,实现方法有多种,可用使用replace等方法处理,还有通过selection.createRange()返回的是一个文本对象,设为objSeleTXT,该对象有execCommand()方法,执行对应的方法即可完成相应的样式编辑,如加粗: objSeleTXT.execCommand("Bold");此外还有如
字体--宋体、黑体、楷体等, execCommand("fontname","",字体);字号--字号大小,execCommand("fontsize","",字号);加重, execCommand("Bold");斜体,execCommand("Italic");下划线, execCommand("Underline");删除线, execCommand("StrikeThrough"); 居左, execCommand("JustifyLeft"); 居右, execCommand("JustifyRight");居中, execCommand("JustifyCenter");剪切, execCommand("Cut"); 拷贝, execCommand("Copy");粘贴, execCommand("Paste");取消操作--IE5.0以后可以无限取消, execCommand("Undo"); 重复操作, execCommand("Redo"); 等
(3)光标位置的获取等
例如:
<iframe id="myEditer" width="100%" height="200px"></iframe><input type="button" value="加粗" onclick="Bold();"><script type="text/javascript" language="javascript">myEditer.document.designMode = 'on';function Bold(){var objSel = myEditer.document.selection.createRange();//alert(objSel.text);objSel.execCommand("Bold");}</script>
到此一个建议的HTML编辑器已经完成了。
- HTML编辑器的制作方法
- outlook HTML签名制作方法
- Html布局中简单的table的制作方法
- Eclipse的HTML编辑器
- Eclipse的HTML编辑器 .
- Eclipse的HTML编辑器
- Eclipse的HTML编辑器
- 冻结表头HTML报表制作方法
- 冻结表头HTML报表制作方法
- 单县羊肉汤的制作方法
- 自动更新程序的制作方法
- 网线的制作方法
- ActiveX的制作方法
- 论文参考文献的制作方法
- 圆角的制作方法
- PPT的制作方法
- 导航图的制作方法
- patch 的制作方法
- ASIHTTPRequest 详解, http 请求终结者
- .net防止多次点击按钮
- private static String CompressPngFile(
- ASIHTTPRequest 详解, http 请求终结者
- C++:explicit 关键字
- HTML编辑器的制作方法
- VeryCD灌水机演示代码(附另外一个发贴机代码)
- sqlite导出
- warning LNK4089
- Berkeley DB Java Edition 使用手册
- C++ 判断进程是否存在
- Excel:自动生成各表单的超链接清单
- Windows XP3安装internet 信息服务(IIS)时对策
- 六道经典SQL语句题完全掌握SQL语句