转载请注明出处:http://www.cnblogs.com/enzozo/p/4357031.html

写在前面:

本文本编辑器具备功能:选择字体大小、颜色、加粗、斜体、下划线。点击 'Submit' 后生成预览,再点击 'Edit' 后可继续编辑。

主要利用的是 document.execCommand()指令 和 div的contentEditable属性(值为true或空或inherit时,div中的内容可编辑,为false时不可编辑)。

正文开始:

index.html:

 <!DOCTYPE html>
<html>
<head>
<title> 捉妖菌のEditor </title>
<link href="index.css" rel="stylesheet">
<script type="text/javascript" src="index.js"></script>
</head>
<body>
<div id="toolbar">
<span>Size:</span>
<select id="size">
<option value="3">Tiny</option>
<option value="4">Small</option>
<option value="5">Normal</option>
<option value="6">Big</option>
<option value="7">Large</option>
</select>
&nbsp; <span>Color:</span>
<select id="color">
<option value="black" style="color:black">Black</option>
<option value="gray" style="color:gray">Gray</option>
<option value="brown" style="color:brown">Brown</option>
<option value="red" style="color:red">Red</option>
<option value="pink" style="color:pink">Pink</option>
<option value="yellow" style="color:yellow">Yellow</option>
<option value="orange" style="color:orange">Orange</option>
<option value="blue" style="color:blue">Blue</option>
<option value="Green" style="color:green">Green</option>
</select>
&nbsp; <span><strong>B</strong></span>
<input type="checkbox" id="bold">
&nbsp; <span><i>I</i></span>
<input type="checkbox" id="italic">
&nbsp; <span style="text-decoration:underline">U</span>
<input type="checkbox" id="underline">
</div>
<div>
<input type="button" value="Submit" id="submit">
<input type="button" value="Edit" id="edit">
</div>
<div id="editor" class="editable"></div>
</body>
</html>

index.css:

 .editable, .display {
resize: vertical;
overflow: auto;
border: 1px solid silver;
border-radius: 5px;
min-height: 400px;
padding: 1em;
margin-top: 20px;
} body {
font-size: 13pt;
font-family: "Microsoft Yahei", Georgia, Serif;
} #submit, #edit {
position: absolute;
top: 22px;
right: 20px;
height: 30px;
} #edit {
display: none;
} #toolbar {
margin-top: 20px;
border: 1px solid silver;
padding: 5px;
background-color: #F2F2F2;
border-radius: 5px;
} .editable {
box-shadow: inset 0 0 10px silver;
} .display {
box-shadow: 0px;
}

注:因为div #editor有两种形式:编辑和预览。所以两种模式下,div需呈现出不同的样式,以免使用者产生不解。通过js更改#editor的className即可达到效果。

index.js:

 $ = function(id) { return document.getElementById(id); };
$$ = function(tag) { return document.getElementsByTagName(tag); }; window.onload = function() {
$('editor').contentEditable = true;
$('size').onchange = function() {
var s = parseInt($('size').value);
$('editor').focus();
document.execCommand('FontSize', false, s);
}
$('color').onchange = function() {
$('editor').focus();
document.execCommand('ForeColor', false, $('color').value);
};
$('bold').onchange = function() {
$('editor').focus();
document.execCommand('Bold');
};
$('italic').onchange = function() {
$('editor').focus();
document.execCommand('Italic');
};
$('underline').onchange = function() {
$('editor').focus();
document.execCommand('Underline');
}; $('submit').onclick = function() {
$('editor').contentEditable = false;
$('toolbar').style.visibility = 'hidden';
$('edit').style.display = 'block';
$('submit').style.display = 'none';
$('editor').className = 'display';
}
$('edit').onclick = function() {
$('editor').contentEditable = true;
$('toolbar').style.visibility = 'visible';
$('edit').style.display = 'none';
$('editor').className = 'editable';
$('submit').style.display = 'block';
}
};

注:document.execCommand指令中,参数一为属性名,第二个参数为true(显示对话框)或false(不显示对话框),最后一个参数是针对第一个参数的值。

最后上一张测试图:

转载请注明出处:http://www.cnblogs.com/enzozo/p/4357031.html

javascript 简易文本编辑器的更多相关文章

  1. JavaScript 实现文本编辑器

    JavaScript 实现文本编辑器 最近,我需要做一个非常基本的网页内容编辑功能.我不想使用 iframe ,我也不想要一个功能特别多的复杂编辑器,只需要很基本的内容编辑功能,例如粗体,斜体,列表, ...

  2. 10个免费的javascript富文本编辑器(jQuery and non-jQuery)

    祝愿园子里的朋友圣诞节快乐. 本文介绍了10个免费易用富文本编辑器(rich text editors,RTE),其中5个是Jquery插件,另外5个是非Jquery富文本编辑器 简介 Javascr ...

  3. Javascript富文本编辑器

    分享几款Javascript富文本编辑器 ueditor jqframework xheditor htmlbox kindeditor wymeditor jhtmlarea markitup ck ...

  4. javascript 在线文本编辑器

    javascript 在线文本编辑器实现代码. 效果例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGhwZmVuZ2h1bw==/font/5 ...

  5. C++ mfc 简易文本编辑器 遇到的一些问题

    [题目40]简易文本编辑器. 设计一个简易的文本编辑器. 设计要求: (1) 具有图形菜单界面: (2) 查找,替换(等长,不等长),插入(插串,文本块的插入).文本块移动(行块,列块移动),删除; ...

  6. JavaScript 富文本编辑器

    WEB项目中使用UEditor(富文本编辑器) UEditor - 完整示例 http://ueditor.baidu.com/website/onlinedemo.html UEditor注意事项: ...

  7. Java实现"命令式"简易文本编辑器原型

    源自早先想法, 打算从界面方向做些尝试. 找到个简单文本编辑器的实现: Simple Text Editor - Java Tutorials. 原本的菜单/按钮界面如下. 包括基本功能: 新建/打开 ...

  8. AUTOGUI生成的一个简易文本编辑器

    ; Generated by AutoGUI #SingleInstance Force #NoEnv SetWorkingDir %A_ScriptDir% SetBatchLines - #Inc ...

  9. 小伙伴们惊呆了!10行 JavaScript 实现文本编辑器

    最近,我需要做一个非常基本的网页内容编辑功能.我不想使用 iframe ,我也不想要一个功能特别多的复杂编辑器,只需要很基本的内容编辑功能,例如粗体,斜体,列表,对齐等等. 您可能感兴趣的相关文章 分 ...

随机推荐

  1. BZOJ 1717 [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组)

    [题目链接]http://www.lydsy.com/JudgeOnline/problem.php?id=1717 [题目大意] 求一个最长的串,使得其在母串中出现的次数达到要求 [题解] 二分答案 ...

  2. Asp.net MVC中关于@Html标签的使用

    @Html帮助器简单说明,记录些基本的跟HTML中对应的@html帮助器,@Html基本包含了html中的表单控件和常用Html 在@Html中,带有For的主要是针对强类型的Html类型. 用于说明 ...

  3. ios蓝牙开发(一)蓝牙相关基础知识

    蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...

  4. Nhibernate初入门基本配置(二)

    转载地址http://www.cnblogs.com/kissdodog/p/3306428.html 使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学 ...

  5. 简单天气应用开发——解析HeWeather JSON

    借助和风天气API成功获取到了我想要的天气信息,但在怎么提取出我想要的数据上又遇到了问题. {"HeWeather data service 3.0":[{"basic& ...

  6. Add Two Numbers - C++链表操作

    题目意思很简单,两个链表分别表示两个数,将两个数相加的结果存入一个新的链表中. 思路同样很简单:两个链表如果一样长,对应位置相加,如果某一个链表多了,则根据加的结果有无进位继续处理,全部结束后要考虑会 ...

  7. 两种mysql文件安装方式——win7 32位OS

    官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的. 1. .ZIP格式安装 http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345 ...

  8. PHP的一些函数

    //进制转换类 base_convert //字符转十六进制 binhex

  9. (IOS)关于Xcode的架构(Architectures)设置

    首先来了解一下Architectures中几个参数的含义 ARMv6:ARM11内核用于iPhone2G和iPhone3G中的架构 ARMv7:modern ARM内核用于iPhone3GS和iPho ...

  10. android application 的使用

    参考http://oyeal.iteye.com/blog/941183 由于intent能够传送的对象类型非常有限  因此有些很多类都要用到的变量我们放在Application中  很像web中的s ...