原生JS实现简单富文本编辑器
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>原生JS实现简单富文本编辑器</title>
</head> <body> <center><h2 style="margin:auto;">原生JS实现简单富文本编辑器</h2></center>
<hr> <div id="toolbar"
style="width:700px;margin:auto;border:2px solid gray;padding: 5px;overflow: auto;font-family: 'Courier New', Courier, monospace;">
<input type="button" name="bold" value='Bold' class="bold">
<input type="button" name="italic" value='Italic' class="italic">
<input type="button" name="underline" value='Underline' class="decotation">
</div> <div id="edit"
style="width:700px;height:500px;margin:auto;border:2px solid gray;padding: 5px;overflow: auto;"
contenteditable="true">
</div> <button id="save" style="width:300px;height:30px;margin:auto;margin-top:30px;
background-color: green;border:1px solid green;display: block;color: white;font-family:'Courier New', Courier, monospace;
font-weight: 500;font-size: 20px;">点 击</button> <script>
(function () {
// 富文本编辑器类
class Editor {
constructor() {
this.bindElem();
} bindElem() { var toolbar = document.getElementById("toolbar");
var bs = toolbar.querySelectorAll('input,select');
for (var i = 0; i < bs.length; i++) {
if (bs[i].tagName.toLowerCase() == 'select') {
bs[i].onchange = function () {
document.execCommand(this.name, true, this.value);
}
} else if (bs[i].tagName.toLowerCase() == 'input') {
this.action(bs[i], bs[i].name);
}
} } action(obj, attr) {
obj.onclick = function () {
document.execCommand(attr,true);
}
} } new Editor(); document.getElementById("save").onclick = function(){
alert(document.getElementById("edit").innerHTML);
} })(); </script> </body> </html>

知识点:
1.contenteditable属性
2.document.execCommand()方法
参考文章:
1.https://blog.csdn.net/WU5229485/article/details/79692430
参考资料:
1.https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand
原生JS实现简单富文本编辑器的更多相关文章
- 原生JS实现简单富文本编辑器2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 基于JQuery的简单富文本编辑器
利用jQuery实现最简单的编辑器 我试了很多种方法,目前最快捷能够实现及其简单的编辑可以使用 document.execCommand("ForeColor", "fa ...
- summernote富文本编辑器
下载summernote官方demo,解压,把文件夹中的summernote.js,summernote.css和font整个文件夹都放到服务器对应的项目目录里 引入summernote 所需要的bo ...
- Android - 富文本编辑器
Android富文本编辑器(一):基础知识 目前主流的基于Android富文本开发方式思路如下: 基于TextView图文混排 使用方式: TextView textView = new TextVi ...
- 【JavaScript】富文本编辑器
这是js写的富文本编辑器,还存在一些bug,但基本功能已经实现,通过这个练习,巩固了js富文本编辑方面的知识,里面包含颜色选择器.全屏.表情.上传图片等功能,每个功能实际对应的就是一个小插件啦 部分程 ...
- day82:luffy:课程详情页面显示&章节和课时显示&视频播放组件&CKEditor富文本编辑器
目录 1.初始课程详情页面 2.视频播放组件 3.课程详情页面后端接口实现 4.课程详情页面-前端 5.CKEditor富文本编辑器 6.课程章节和课时显示-后端接口 7.课程章节和课时显示-前端 1 ...
- JS编写自己的富文本编辑器
富文本编辑器,网上有很多功能齐全种类丰富的如百度的Ueditor,简单适用型的如WangEditor等等.在经过一番挑选后,我发现都不适用现在的项目,然后决定自己造轮子玩玩.富文本编辑器中主要涉及到J ...
- 浅析富文本编辑器框架Slate.js
浅析富文本编辑器框架Slate.js 本文不是关于Slate.js使用入门的文章,如果还不了解该框架,建议先阅读下官方的文档:Slate官网文档 关于Slate的一些特性 不同于其他编辑器类的库,Sl ...
- 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)
导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...
随机推荐
- AD域环境搭建
1.安装Windows server服务器 我安装的是Windows server 2012 Standard x64 下载地址:https://pan.baidu.com/s/1dZ_B5JIEit ...
- [转帖]Linux 中的零拷贝技术,第 2 部分
Linux 中的零拷贝技术,第 2 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/index.html Linux 中 ...
- hadoop基本文件配置
[学习笔记] 5)hadoop基本文件配置:hadoop配置文件位于:/etc/hadoop下(etc即:“etcetera”(附加物))core-site.xml:<configuration ...
- c++ string类型成员变量在调用构造函数后未能正确赋值
struct RelItem{ string segName; Elf32_Rel* rel; string relName; RelItem(string seg, int addr, string ...
- js 颜色随机切换
生成随机颜色 方法1:RGB模式 function randomColor1() { var r=Math.floor(Math.random()*256); var g=Math.floor(Mat ...
- python_openCV例程遇到error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale的简单解决方法
需要把haar分类器训练的结果xml数据放在名为haarcascades的文件夹下进行调用. 将: face_cascade = cv2.CascadeClassifier('haarcascade_ ...
- oj上的测试点信息
Accepted 通过!(AC) Wrong Answer 答案错.(WA) Runtime Error ...
- go defer 语句会延迟函数的执行直到上层函数返回。
defer code... 可以理解为 执行完当前defer所在的方法代码后执行defer 中的代码 常用在释放资源 比如 关闭文件 为防止忘记编写关闭代码 可以先写好 defer 各种释放资源 ...
- egret 微信小游戏 错误
1,使用jszip错误 (1) t.createElementNS is not a function 修改:webapp-adapter.js,增加一个方法 createElementNS: f ...
- docker部署mysql,nginx,php,并上传镜像到私有仓库
前言 最近公司准备把现有环境全部搞成容器化,所以笔者就先了解了一下docker,并搞了一搞,并把自己搞的过程记录下来.话不多说直接开干 环境说明 Centos7 Docker version 18.0 ...