以前一直不知道好多网站上所说的在线编辑器是怎么回事,后来在文档里发现document 对象的一个方法。
document.execCommand(command, false, value);
才知道具体原理。
一、首先来看一个例子:
<DIVcontenteditable="true"style="border:dashed blue 2px">Hello World!</DIV>
保存为html网页,打开看看,在DIV里出现了一个光标,这个DIV就变成可以编辑的了。
类似的,SPAN,FONT等都可以有 contenteditable="true" 这个属性。
再试试下面的:
<DIVcontenteditable="true"style="border:dashed blue 2px">Hello World! <IMGsrc="http://p.blog.csdn.net/images/p_blog_csdn_net/comstep/70786/o_logo.jpg" /> </DIV>
我们就可以拉伸图片了。
二、具体实现:
1、需要两个页面,blank.html editor.html
2、blank.html 作为 editor.html的一个内嵌Frame,作为编辑框。
<html> <body topmargin="10" leftmargin="10" bgColor="#f6f6f6"> <div id="RTC" contenteditable = true></div> </body> </html>
3、editor.html 主要是一些Javascript,用来处理不同的命令。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <SCRIPT LANGUAGE="JavaScript"> <!-- var contentHTML; function exeCommand(command, value) { document.execCommand(command, false, value); }
// 加粗 function Black() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('Bold', ''); }
// 斜体 function Italic() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('Italic', ''); }
// 下划线 function UnderLine() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('Underline', ''); }
// 向里缩进 function Indent() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('Indent', ''); }
// 向外缩进 function Outdent() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('Outdent', ''); }
// 无序列表 function UnorderList() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('InsertUnorderedList', ''); }
// 有序列表 function OrderList() { var obj = frames['ifRTC'].RTC; obj.focus(); exeCommand('InsertOrderedList', ''); }
// 插入图片 function Image() { var obj = frames['ifRTC'].RTC; obj.focus(); ImagePath = window.prompt('请输入图片路径:', ''); exeCommand('InsertImage', ImagePath); }
// 预览效果 function Preview() { var htmlContent = frames['ifRTC'].RTC.innerHTML; var open = window.open(''); open.document.write(htmlContent); }
// 查看编辑框里的HTML源代码 function Source() { var htmlContent = frames['ifRTC'].RTC.innerHTML; if (document.all.iframeDiv.style.display == 'block') { document.all.iframeDiv.style.display = 'none'; document.all.htmlText.value = htmlContent; document.all.textDiv.style.display = 'block'; document.all.htmlText.focus(); document.all.Source.value='HTML'; } else { document.all.iframeDiv.style.display = 'block'; document.all.textDiv.style.display = 'none'; frames['ifRTC'].RTC.innerHTML = document.all.htmlText.value; frames['ifRTC'].RTC.focus(); document.all.Source.value=' 源代码 '; } }
// 增加编辑框的高度 function Add() { document.all.ifRTC.height = document.all.ifRTC.height*1 + 50; } //--> </SCRIPT> </HEAD>
<BODY> <TABLE width="400"border="0"> <TR> <TD><input type="button" value="B" name="Black" onclick="Black()" /></TD> <TD><input type="button" value="I" name="Italic" onclick="Italic()" /></TD> <TD><input type="button" value="U" name="UnderLine" onclick="UnderLine()" /></TD> <TD><input type="button" value="UL" name="UnorderList" onclick="UnorderList()" /></TD> <TD><input type="button" value="OL" name="OrderList" onclick="OrderList()" /></TD> <TD><input type="button" value="左" name="Outdent" onclick="Outdent()" /></TD> <TD><input type="button" value="右" name="Indent" onclick="Indent()" /></TD> <TD><input type="button" value="图" name="Image" onclick="Image()" /></TD> </TR> </TABLE> <div id="iframeDiv" style="display:block"> <iframe id="ifRTC" width="400" height="200" border="1" src="blank.html" ></iframe> </div> <div id="textDiv" style="display:none"> <textarea id="htmlText" cols="50" rows="10"></textarea> </div> <br> <input type="button" value=" + " name="Add" onclick="Add()" /> <input type="button" value=" 预 览 " name="Preview" onclick="Preview()" /> <input type="button" value=" 源代码 " name="Source" onclick="Source()" /> </BODY> </HTML>
三、后记:
这里写的只是一个简单的编辑器,其实重要的就是:
contenteditable="true"
和
document.execCommand(command, false, value);
关于 document 的一些方法,可以查看MS的文档。
execCommand 的一些命令也可以在文档里找到,下面列出一些:
execCommand(command, false, value); 中的 command 可以是以下这些:
BackColor
|
Sets or retrieves the background color of the current selection.
|
Bold
|
Toggles the current selection between bold and nonbold.
|
ClearAutocompleteForForms
|
Clears saved forms data.
|
Copy
|
Copies the current selection to the clipboard.
|
CreateBookmark
|
Retrieves the name of a bookmark anchor or creates a bookmark anchor for the current selection or insertion point.
|
CreateLink
|
Retrieves the URL of a hyperlink or creates a hyperlink on the current selection.
|
Cut
|
Copies the current selection to the clipboard and then deletes it.
|
Delete
|
Deletes the current selection.
|
FontName
|
Sets or retrieves the font for the current selection.
|
FontSize
|
Sets or retrieves the font size for the current selection.
|
ForeColor
|
Sets or retrieves the foreground (text) color of the current selection.
|
FormatBlock
|
Sets or retrieves the current block format tag.
|
Indent
|
Increases the indent of the selected text by one indentation increment.
|
InsertButton
|
Overwrites a button control on the current selection.
|
InsertFieldset
|
Overwrites a box on the current selection.
|
InsertHorizontalRule
|
Overwrites a horizontal line on the current selection.
|
InsertIFrame
|
Overwrites an inline frame on the current selection.
|
InsertImage
|
Overwrites an image on the current selection.
|
InsertInputButton
|
Overwrites a button control on the current selection.
|
InsertInputCheckbox
|
Overwrites a check box control on the current selection.
|
InsertInputFileUpload
|
Overwrites a file upload control on the current selection.
|
InsertInputHidden
|
Inserts a hidden control on the current selection.
|
InsertInputImage
|
Overwrites an image control on the current selection.
|
InsertInputPassword
|
Overwrites a password control on the current selection.
|
InsertInputRadio
|
Overwrites a radio control on the current selection.
|
InsertInputReset
|
Overwrites a reset control on the current selection.
|
InsertInputSubmit
|
Overwrites a submit control on the current selection.
|
InsertInputText
|
Overwrites a text control on the current selection.
|
InsertMarquee
|
Overwrites an empty marquee on the current selection.
|
InsertOrderedList
|
Toggles the current selection between an ordered list and a normal format block.
|
InsertParagraph
|
Overwrites a line break on the current selection.
|
InsertSelectDropdown
|
Overwrites a drop-down selection control on the current selection.
|
InsertSelectListbox
|
Overwrites a list box selection control on the current selection.
|
InsertTextArea
|
Overwrites a multiline text input control on the current selection.
|
InsertUnorderedList
|
Toggles the current selection between an ordered list and a normal format block.
|
Italic
|
Toggles the current selection between italic and nonitalic.
|
JustifyCenter
|
Centers the format block in which the current selection is located.
|
JustifyLeft
|
Left-justifies the format block in which the current selection is located.
|
JustifyRight
|
Right-justifies the format block in which the current selection is located.
|
Outdent
|
Decreases by one increment the indentation of the format block in which the current selection is located.
|
OverWrite
|
Toggles the text-entry mode between insert and overwrite.
|
Paste
|
Overwrites the contents of the clipboard on the current selection.
|
Refresh
|
Refreshes the current document.
|
RemoveFormat
|
Removes the formatting tags from the current selection.
|
SelectAll
|
Selects the entire document.
|
SaveAs
|
Saves the current Web page to a file.
|
UnBookmark
|
Removes any bookmark from the current selection.
|
Underline
|
Toggles the current selection between underlined and not underlined.
|
Unlink
|
Removes any hyperlink from the current selection.
|
Unselect
|
|
摘自:http://lijunabc.iteye.com/blog/658539
|
相关推荐
quill.js-心目中的最佳富文本编辑器-html引入、改后可用于Vue-quill-editor 基于html 可以将文本框内图片优先上传后服务器 因为编辑器默认是将图片转成base64存储的,而我们实际开发需要将图片存在自己的服务器中...
在Android开发中,有时我们需要为用户提供一个可以编辑和格式化的文本输入界面,这通常涉及到富文本编辑器的实现。...通过不断迭代和优化,我们可以创建出一款功能齐全、性能优秀的基于WebView的富文本编辑器。
由于没有直接提供博客内容,我会基于富文本编辑器的一般概念和常见功能来展开讨论。 1. **富文本编辑器的基本功能**: - **文本格式化**:包括加粗、斜体、下划线、字体选择、字号调整、颜色设置等。 - **段落...
标题中的“一款基于vue3+typescript+element plus的HTML5富文本编辑器”揭示了这个项目的核心技术栈,包括Vue.js的最新版本Vue 3、TypeScript以及Element Plus UI库。Vue 3是当前非常流行的前端框架,它提供了组件化...
Notepad++则是一款开源的文本编辑器,基于强大的Scintilla编辑组件。它同样支持多语言代码编辑,并且拥有代码折叠、语法高亮和自动完成等功能。Notepad++的插件管理系统是一大特色,用户可以从众多插件中选择安装,...
Vue-html5-editor是一款基于Vue.js开发的富文本编辑器,专为前端开发者设计,用于在Web应用中实现复杂的文本编辑功能。此插件版本为v1.1.1,提供了丰富的API和配置选项,便于定制化开发。Vue.js是目前非常流行的一个...
因此,富文本编辑器应运而生,它们通常基于JavaScript构建,为用户提供类似于Word的界面,可以进行字体设置、段落调整、插入图片和链接等操作。 富文本编辑器的实现主要依赖于DOM(文档对象模型)和APIs,如...
基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件...
nicEdit是一款基于JavaScript的开源富文本编辑器,它的核心设计理念是“精简”和“易用”。正如标题和描述所提到的,nicEdit的代码结构清晰,只有一个主要的nicEdit类,这使得它在内存占用和加载速度上表现优秀,...
3. **JavaScript编程**:大多数富文本编辑器是基于JavaScript构建的,它们通过监听用户的输入事件,实时更新HTML内容。开发者需要掌握JavaScript基础,包括变量、函数、DOM操作等,同时,对于异步编程和事件驱动编程...
《uniapp富文本编辑器深度解析与应用指南》 在移动应用开发中,富文本编辑器扮演着重要的角色,它允许用户创建、编辑并格式化文本内容,支持插入图片、链接等多种元素。uniapp作为一款跨平台的开发框架,通过其强大...
HTML文本编辑器是一种基于网页的用户界面,允许用户在浏览器中进行富文本编辑,类似于Word文档的在线版本。这些编辑器通常由HTML、CSS和JavaScript构建,为用户提供了一个直观的界面来创建和编辑内容,同时支持插入...
`wysiwyg.js`是一款基于jQuery的富文本编辑器插件,它以其高效和稳定性能受到开发者青睐。这款插件的主要目标是提供一个快速、无错误并且对页面其他功能无干扰的编辑体验。 在网页开发中,`<textarea>`元素通常被...
在技术层面,Vuehtml5editor是基于开源的HTML5富文本编辑器——simditor进行封装的。Simditor本身具有良好的性能和稳定性,Vuehtml5editor则进一步将其与Vue.js的组件系统无缝对接,使得在Vue项目中使用富文本编辑器...
Java文本编辑器源码HTML版是一款基于HTML技术的文本编辑组件,主要应用于Java Web应用程序中,为用户提供在网页上编辑文本的功能。HTMLArea是这款编辑器的名称,它允许开发者集成到自己的Web应用中,提供类似Word的...
在本文中,我们将深入探讨基于WPF的富文本编辑器,这是一个开源项目,其功能类似于Microsoft Word。这个编辑器提供了一系列强大的文本处理能力,适用于开发人员构建自定义的文本编辑应用。 **WPF(Windows ...
本篇将详细介绍一款基于Swift开发的原生iOS可视化HTML文本编辑器组件,以及它的核心特点和应用场景。 **组件介绍** "swift-一个可复用的原生iOS可视化HTML文本编辑器组件",正如其名,是一个专为iOS设计的、能够...
富文本编辑器的工作原理通常基于WYSIWYG(What You See Is What You Get)概念,即用户在界面上看到的即为最终生成的HTML代码。编辑器通过捕获用户在界面上的操作,实时将这些操作转化为对应的HTML标签,从而在...
- **JavaScript库**:许多富文本编辑器是基于JavaScript编写的,如TinyMCE、CKEditor、Quill等,它们通过DOM操作实现文本框的富文本功能。 - **插件系统**:这些编辑器通常具有插件机制,允许开发者扩展功能,如...
本文将深入探讨C# WinForms中的富文本编辑器及其使用方法,主要基于提供的压缩包文件"升级版文本编辑器"。 富文本编辑器(Rich Text Editor)允许用户在应用程序中创建和编辑具有格式化的文本,如改变字体、大小、...