当前位置:首页 > JavaScript

js实现编辑器

2026-04-04 20:58:50JavaScript

实现基础文本编辑器

使用HTML的contenteditable属性创建可编辑区域

<div id="editor" contenteditable="true"></div>

添加基本样式使编辑器更明显

#editor {
  min-height: 200px;
  border: 1px solid #ccc;
  padding: 10px;
}

添加格式控制按钮

创建格式工具栏HTML结构

<div class="toolbar">
  <button onclick="formatText('bold')">B</button>
  <button onclick="formatText('italic')">I</button>
  <button onclick="formatText('underline')">U</button>
</div>

实现格式控制函数

function formatText(command) {
  document.execCommand(command, false, null);
}

支持更多编辑功能

添加列表和对齐功能按钮

js实现编辑器

<button onclick="formatText('insertUnorderedList')">无序列表</button>
<button onclick="formatText('insertOrderedList')">有序列表</button>
<button onclick="formatText('justifyLeft')">左对齐</button>
<button onclick="formatText('justifyCenter')">居中</button>

实现内容保存与加载

保存编辑器内容

function saveContent() {
  const content = document.getElementById('editor').innerHTML;
  localStorage.setItem('editorContent', content);
}

加载保存的内容

function loadContent() {
  const savedContent = localStorage.getItem('editorContent');
  if(savedContent) {
    document.getElementById('editor').innerHTML = savedContent;
  }
}

添加Markdown支持

使用marked.js库转换Markdown

js实现编辑器

function renderMarkdown() {
  const markdownText = document.getElementById('editor').textContent;
  const html = marked.parse(markdownText);
  document.getElementById('editor').innerHTML = html;
}

实现图片上传功能

创建文件输入元素

<input type="file" id="imageUpload" accept="image/*" style="display:none">
<button onclick="document.getElementById('imageUpload').click()">插入图片</button>

处理图片上传

document.getElementById('imageUpload').addEventListener('change', function(e) {
  const file = e.target.files[0];
  if(file) {
    const reader = new FileReader();
    reader.onload = function(event) {
      document.execCommand('insertImage', false, event.target.result);
    };
    reader.readAsDataURL(file);
  }
});

添加撤销重做功能

维护编辑历史栈

let history = [];
let historyIndex = -1;

document.getElementById('editor').addEventListener('input', function() {
  history = history.slice(0, historyIndex + 1);
  history.push(this.innerHTML);
  historyIndex++;
});

实现撤销和重做函数

function undo() {
  if(historyIndex > 0) {
    historyIndex--;
    document.getElementById('editor').innerHTML = history[historyIndex];
  }
}

function redo() {
  if(historyIndex < history.length - 1) {
    historyIndex++;
    document.getElementById('editor').innerHTML = history[historyIndex];
  }
}

标签: 编辑器js
分享给朋友:

相关文章

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…