当前位置:首页 > JavaScript

js实现文本编辑器

2026-01-30 12:39:14JavaScript

实现基础文本编辑器

使用HTML的contenteditable属性快速创建一个可编辑区域,结合JavaScript监听用户输入和操作。以下是一个简单实现:

<div id="editor" contenteditable="true" style="min-height: 200px; border: 1px solid #ccc;"></div>
<button onclick="formatText('bold')">加粗</button>
<button onclick="formatText('italic')">斜体</button>
function formatText(command) {
    document.execCommand(command, false, null);
    document.getElementById('editor').focus();
}

使用第三方库

对于更复杂的需求,推荐使用现成的开源库:

  • Quill.js:模块化设计,支持自定义工具栏和格式
  • TinyMCE:功能全面,支持图片上传等高级功能
  • ProseMirror:适合需要精细控制编辑体验的场景

安装Quill示例:

js实现文本编辑器

npm install quill

基本使用:

import Quill from 'quill';

const quill = new Quill('#editor', {
    theme: 'snow',
    modules: {
        toolbar: [
            ['bold', 'italic'],
            ['link', 'image']
        ]
    }
});

实现自定义功能

添加图片上传功能示例:

js实现文本编辑器

document.getElementById('image-upload').addEventListener('change', (e) => {
    const file = e.target.files[0];
    if (file) {
        const reader = new FileReader();
        reader.onload = (event) => {
            const range = quill.getSelection();
            quill.insertEmbed(range.index, 'image', event.target.result);
        };
        reader.readAsDataURL(file);
    }
});

处理编辑器内容

获取和设置编辑器内容:

// 获取HTML内容
const content = quill.root.innerHTML;

// 设置内容
quill.clipboard.dangerouslyPasteHTML('<p>初始内容</p>');

// 获取纯文本
const text = quill.getText();

实现协同编辑

使用Socket.io实现实时协作:

socket.on('text-change', (delta) => {
    quill.updateContents(delta);
});

quill.on('text-change', (delta, oldDelta, source) => {
    if (source === 'user') {
        socket.emit('text-change', delta);
    }
});

标签: 编辑器文本
分享给朋友:

相关文章

elementui文本

elementui文本

ElementUI 文本组件 ElementUI 提供了多种文本相关的组件,用于展示和处理文本内容。以下是一些常用的文本组件及其用法: 文本展示组件 el-text 用于展示普通文本,支持自定义样式…

vue实现富文本

vue实现富文本

Vue 实现富文本编辑器的方法 使用现成的富文本编辑器库 Vue 生态中有多个成熟的富文本编辑器库可供选择,以下是几个常用的选项: Quill 安装依赖: npm install quill…

vue实现文本查找功能

vue实现文本查找功能

实现文本查找功能的基本思路 在Vue中实现文本查找功能,通常需要监听用户输入的关键词,并在目标文本中进行匹配和突出显示。可以通过计算属性或方法来处理文本匹配逻辑。 核心代码实现 <te…

react如何获取标签内的文本

react如何获取标签内的文本

获取标签内文本的方法 在React中获取标签内的文本可以通过多种方式实现,具体取决于使用场景和需求。 使用ref获取DOM元素文本 通过React的useRef钩子可以获取DOM元素的引用,从而访问…

react文本标注实现

react文本标注实现

React 文本标注实现方法 使用 contentEditable 实现基础标注 通过设置 contentEditable 属性使元素可编辑,结合 window.getSelection() 获取选中…

css文本制作

css文本制作

使用CSS设置文本样式 字体属性 通过font-family可以指定文本字体,支持多个备选字体。font-size控制文字大小,单位可以是px、em或rem。font-weight调整粗细,取值范围1…