当前位置:首页 > JavaScript

js实现编辑器

2026-03-01 20:12:53JavaScript

实现基础文本编辑器

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

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

添加基本样式确保可见性

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

添加格式控制按钮

创建格式工具栏

<div class="toolbar">
  <button onclick="formatText('bold')">加粗</button>
  <button onclick="formatText('italic')">斜体</button>
  <button onclick="formatText('underline')">下划线</button>
</div>

实现格式控制函数

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

支持自定义快捷键

监听键盘事件实现快捷键

document.getElementById('editor').addEventListener('keydown', function(e) {
  if (e.ctrlKey && e.key === 'b') {
    e.preventDefault();
    formatText('bold');
  }
});

实现撤销/重做功能

维护操作历史栈

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

function saveState() {
  const content = document.getElementById('editor').innerHTML;
  history = history.slice(0, historyIndex + 1);
  history.push(content);
  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];
  }
}

集成Markdown支持

添加Markdown解析库

// 使用marked.js库
function renderMarkdown() {
  const markdownText = document.getElementById('editor').textContent;
  document.getElementById('editor').innerHTML = marked.parse(markdownText);
}

实现自动保存功能

设置定时保存

setInterval(() => {
  localStorage.setItem('editorContent', document.getElementById('editor').innerHTML);
}, 5000);

// 页面加载时恢复内容
window.onload = function() {
  const savedContent = localStorage.getItem('editorContent');
  if (savedContent) {
    document.getElementById('editor').innerHTML = savedContent;
  }
};

添加图片上传功能

实现文件选择处理

function insertImage() {
  const input = document.createElement('input');
  input.type = 'file';
  input.accept = 'image/*';

  input.onchange = e => {
    const file = e.target.files[0];
    const reader = new FileReader();

    reader.onload = event => {
      const img = document.createElement('img');
      img.src = event.target.result;
      document.getElementById('editor').appendChild(img);
    };

    reader.readAsDataURL(file);
  };

  input.click();
}

实现代码块支持

添加语法高亮功能

function insertCodeBlock() {
  const code = prompt('输入代码:');
  if (code) {
    const pre = document.createElement('pre');
    const codeElement = document.createElement('code');
    codeElement.textContent = code;
    pre.appendChild(codeElement);
    document.getElementById('editor').appendChild(pre);
    hljs.highlightElement(codeElement); // 使用highlight.js
  }
}

响应式设计优化

添加媒体查询适应不同设备

js实现编辑器

@media (max-width: 768px) {
  #editor {
    min-height: 150px;
    font-size: 14px;
  }

  .toolbar button {
    padding: 5px;
    font-size: 12px;
  }
}

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

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js图片上传实现

js图片上传实现

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

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…