当前位置:首页 > JavaScript

js实现编辑器

2026-01-31 05:02:03JavaScript

实现基础文本编辑器

使用HTML的contenteditable属性创建可编辑区域,结合JavaScript监听输入事件:

<div id="editor" contenteditable="true"></div>
<script>
  const editor = document.getElementById('editor');
  editor.addEventListener('input', () => {
    console.log(editor.innerHTML); // 获取带格式的内容
  });
</script>

集成富文本功能

通过document.execCommand实现粗体、斜体等基础格式操作:

function formatText(command, value = null) {
  document.execCommand(command, false, value);
}
// 调用示例:formatText('bold')  formatText('insertImage', 'url')

使用现成库方案

引入开源库如TinyMCE或Quill快速实现专业编辑器:

<!-- TinyMCE示例 -->
<script src="https://cdn.tiny.cloud/1/your-api-key/tinymce/5/tinymce.min.js"></script>
<script>
  tinymce.init({ selector: '#editor' });
</script>

<!-- Quill示例 -->
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
<script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
<div id="editor"></div>
<script>
  new Quill('#editor', { theme: 'snow' });
</script>

实现Markdown编辑器

结合marked.js库解析Markdown语法:

<textarea id="input"></textarea>
<div id="preview"></div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
  document.getElementById('input').addEventListener('input', (e) => {
    document.getElementById('preview').innerHTML = marked(e.target.value);
  });
</script>

自定义语法高亮

使用Prism.js实现代码高亮功能:

<pre><code class="language-javascript" contenteditable="true">
  function test() { console.log('hello'); }
</code></pre>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.24.1/prism.min.js"></script>

实现撤销/重做功能

通过维护状态数组记录编辑历史:

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

editor.addEventListener('input', () => {
  const content = editor.innerHTML;
  history = history.slice(0, currentIndex + 1);
  history.push(content);
  currentIndex = history.length - 1;
});

function undo() {
  if (currentIndex > 0) {
    currentIndex--;
    editor.innerHTML = history[currentIndex];
  }
}

添加工具栏UI

创建格式控制按钮并与编辑器交互:

<div class="toolbar">
  <button onclick="formatText('bold')">B</button>
  <button onclick="formatText('italic')">I</button>
  <input type="color" onchange="formatText('foreColor', this.value)">
</div>
<style>
  .toolbar { padding: 5px; background: #f0f0f0; }
  .toolbar button { margin-right: 5px; }
</style>

实现自动保存

使用防抖技术定期保存内容:

let saveTimer;
editor.addEventListener('input', () => {
  clearTimeout(saveTimer);
  saveTimer = setTimeout(() => {
    localStorage.setItem('editorContent', editor.innerHTML);
  }, 1000);
});

// 加载保存的内容
window.addEventListener('DOMContentLoaded', () => {
  const saved = localStorage.getItem('editorContent');
  if (saved) editor.innerHTML = saved;
});

js实现编辑器

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

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现交换

js实现交换

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

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…