`
woshixushigang
  • 浏览: 578549 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

html文本编辑器--基于Html

 
阅读更多

以前一直不知道好多网站上所说的在线编辑器是怎么回事,后来在文档里发现document 对象的一个方法。

document.execCommand(command, false, value);

才知道具体原理。

一、首先来看一个例子:

<DIVcontenteditable="true"style="border:dashed blue 2px">Hello World!</DIV>

保存为html网页,打开看看,在DIV里出现了一个光标,这个DIV就变成可以编辑的了。

类似的,SPANFONT等都可以有 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

     2blank.html 作为 editor.html的一个内嵌Frame,作为编辑框。

<html>
<body topmargin="10" leftmargin="10" bgColor="#f6f6f6">
   <div id="RTC" contenteditable = true></div>
</body>
</html>

     3editor.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()" />&nbsp;&nbsp;
<input type="button" value="
   " name="Preview" onclick="Preview()" />&nbsp;&nbsp;
<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

    quill.js-心目中的最佳富文本编辑器-html引入、改后可用于Vue-quill-editor 基于html 可以将文本框内图片优先上传后服务器 因为编辑器默认是将图片转成base64存储的,而我们实际开发需要将图片存在自己的服务器中...

    Android-基于WebView的富文本编辑器-Android

    在Android开发中,有时我们需要为用户提供一个可以编辑和格式化的文本输入界面,这通常涉及到富文本编辑器的实现。...通过不断迭代和优化,我们可以创建出一款功能齐全、性能优秀的基于WebView的富文本编辑器。

    富文本编辑器- wysiwyg

    由于没有直接提供博客内容,我会基于富文本编辑器的一般概念和常见功能来展开讨论。 1. **富文本编辑器的基本功能**: - **文本格式化**:包括加粗、斜体、下划线、字体选择、字号调整、颜色设置等。 - **段落...

    一款基于vue3+typescript+element plus的HTML5富文本编辑器.zip

    标题中的“一款基于vue3+typescript+element plus的HTML5富文本编辑器”揭示了这个项目的核心技术栈,包括Vue.js的最新版本Vue 3、TypeScript以及Element Plus UI库。Vue 3是当前非常流行的前端框架,它提供了组件化...

    文本编辑器-editplus,notepad++

    Notepad++则是一款开源的文本编辑器,基于强大的Scintilla编辑组件。它同样支持多语言代码编辑,并且拥有代码折叠、语法高亮和自动完成等功能。Notepad++的插件管理系统是一大特色,用户可以从众多插件中选择安装,...

    Vue-html5-editor富文本编辑器插件 v1.1.1.zip

    Vue-html5-editor是一款基于Vue.js开发的富文本编辑器,专为前端开发者设计,用于在Web应用中实现复杂的文本编辑功能。此插件版本为v1.1.1,提供了丰富的API和配置选项,便于定制化开发。Vue.js是目前非常流行的一个...

    html5文本编辑器_在线文本编辑器_富文本编辑器

    因此,富文本编辑器应运而生,它们通常基于JavaScript构建,为用户提供类似于Word的界面,可以进行字体设置、段落调整、插入图片和链接等操作。 富文本编辑器的实现主要依赖于DOM(文档对象模型)和APIs,如...

    基于vue的html5富文本编辑器插件.zip

    基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件.zip基于vue的html5富文本编辑器插件...

    nicEdit 富文本编辑器-----【下载不扣分,回帖加1分,欢迎下载,童叟无欺】

    nicEdit是一款基于JavaScript的开源富文本编辑器,它的核心设计理念是“精简”和“易用”。正如标题和描述所提到的,nicEdit的代码结构清晰,只有一个主要的nicEdit类,这使得它在内存占用和加载速度上表现优秀,...

    富文本编辑器

    3. **JavaScript编程**:大多数富文本编辑器是基于JavaScript构建的,它们通过监听用户的输入事件,实时更新HTML内容。开发者需要掌握JavaScript基础,包括变量、函数、DOM操作等,同时,对于异步编程和事件驱动编程...

    uniapp富文本编辑器.zip

    《uniapp富文本编辑器深度解析与应用指南》 在移动应用开发中,富文本编辑器扮演着重要的角色,它允许用户创建、编辑并格式化文本内容,支持插入图片、链接等多种元素。uniapp作为一款跨平台的开发框架,通过其强大...

    html做的文本编辑器

    HTML文本编辑器是一种基于网页的用户界面,允许用户在浏览器中进行富文本编辑,类似于Word文档的在线版本。这些编辑器通常由HTML、CSS和JavaScript构建,为用户提供了一个直观的界面来创建和编辑内容,同时支持插入...

    富文本编辑器插件-wysiwyg.js

    `wysiwyg.js`是一款基于jQuery的富文本编辑器插件,它以其高效和稳定性能受到开发者青睐。这款插件的主要目标是提供一个快速、无错误并且对页面其他功能无干扰的编辑体验。 在网页开发中,`&lt;textarea&gt;`元素通常被...

    Vuehtml5editor是一个Vue的富文本编辑器插件

    在技术层面,Vuehtml5editor是基于开源的HTML5富文本编辑器——simditor进行封装的。Simditor本身具有良好的性能和稳定性,Vuehtml5editor则进一步将其与Vue.js的组件系统无缝对接,使得在Vue项目中使用富文本编辑器...

    java 文本编辑器 源码 html版

    Java文本编辑器源码HTML版是一款基于HTML技术的文本编辑组件,主要应用于Java Web应用程序中,为用户提供在网页上编辑文本的功能。HTMLArea是这款编辑器的名称,它允许开发者集成到自己的Web应用中,提供类似Word的...

    WPF富文本编辑器,开源代码demo仿word

    在本文中,我们将深入探讨基于WPF的富文本编辑器,这是一个开源项目,其功能类似于Microsoft Word。这个编辑器提供了一系列强大的文本处理能力,适用于开发人员构建自定义的文本编辑应用。 **WPF(Windows ...

    swift-一个可复用的原生iOS可视化HTML文本编辑器组件

    本篇将详细介绍一款基于Swift开发的原生iOS可视化HTML文本编辑器组件,以及它的核心特点和应用场景。 **组件介绍** "swift-一个可复用的原生iOS可视化HTML文本编辑器组件",正如其名,是一个专为iOS设计的、能够...

    富文本编辑器组件.zip

    富文本编辑器的工作原理通常基于WYSIWYG(What You See Is What You Get)概念,即用户在界面上看到的即为最终生成的HTML代码。编辑器通过捕获用户在界面上的操作,实时将这些操作转化为对应的HTML标签,从而在...

    富文本编辑器,轻松搞定文本框

    - **JavaScript库**:许多富文本编辑器是基于JavaScript编写的,如TinyMCE、CKEditor、Quill等,它们通过DOM操作实现文本框的富文本功能。 - **插件系统**:这些编辑器通常具有插件机制,允许开发者扩展功能,如...

    C# winform 富文本编辑器.rar

    本文将深入探讨C# WinForms中的富文本编辑器及其使用方法,主要基于提供的压缩包文件"升级版文本编辑器"。 富文本编辑器(Rich Text Editor)允许用户在应用程序中创建和编辑具有格式化的文本,如改变字体、大小、...

Global site tag (gtag.js) - Google Analytics