当前位置:首页 > 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快速实现专业编辑器:

js实现编辑器

<!-- 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实现代码高亮功能:

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实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…