UEditor 1.4.3 使用教程

目录

  1. 什么是 UEditor?
  2. 第一步:下载与准备
  3. 第二步:配置与部署
    • 服务器端配置 (PHP)
    • 前端页面配置
  4. 第三步:基本集成与使用
  5. 第四步:常用功能与配置详解
    • ueditor.config.js 配置项
    • 初始化编辑器实例
  6. 第五步:高级功能与自定义
    • 自定义工具栏按钮
    • 监听编辑器内容变化
    • 从服务器获取内容
  7. 常见问题与解决方案
    • 上传图片失败
    • 样式不生效
  8. 总结与最佳实践

什么是 UEditor?

UEditor 是由百度「前端研发部」开发的所见即所得富文本编辑器,具有轻量,功能丰富,可定制等特点,它使用 MIT 协议开源,允许自由使用和修改。

ueditor1.4.3使用教程
(图片来源网络,侵删)

4.3 版本特点:

  • 成熟稳定:1.4.3 是一个非常经典和稳定的版本,社区文档和解决方案非常丰富。
  • 跨浏览器:兼容主流浏览器。
  • 功能全面:支持图文混排、表格、代码高亮、视频插入等富文本编辑功能。
  • 前后端分离:前端负责编辑,后端负责处理上传、图片管理等,通过 API 交互。

第一步:下载与准备

  1. 下载源码 访问 UEditor 官方 GitHub 仓库:https://github.com/fex-team/ueditor 在 Releases 页面找到 4.3 版本,下载其源码包(ueditor1_4_3-utf8-php.zip),这里我们以 PHP 版本为例,因为它是最常见的。

  2. 解压并放置 将下载的 ZIP 包解压,你会得到一个名为 ueditor1_4_3-utf8-php 的文件夹。 将这个文件夹重命名(ueditor),然后放置到你的 Web 项目的根目录下,或者一个方便访问的公共目录中,public/ueditorassets/ueditor

  3. 目录结构 了解目录结构对后续配置至关重要:

    ueditor1.4.3使用教程
    (图片来源网络,侵删)
    ueditor/                  // 编辑器根目录
    ├── _examples/            // 示例文件
    ├── _src/                 // 编辑器源码
    ├── dialogs/              // 弹出对话框
    ├── lang/                 // 语言包
    ├── themes/               // 样式主题
    ├── third-party/          // 第三方库
    ├── ueditor.config.js     // **核心配置文件**
    ├── ueditor.all.js        // 编辑器核心代码(包含所有模块)
    ├── ueditor.parse.js      // 服务端解析内容用的JS
    └── php/                  // **PHP后端处理目录**
        ├── action_cors.php   // 跨域配置
        ├── config.json       // **后端核心配置文件**
        ├── controller.php    // 后端入口文件
        └── ...               // 其他处理上传、图片等的PHP文件

第二步:配置与部署

UEditor 的配置分为前端配置后端配置两部分。

服务器端配置

后端配置主要是告诉 UEditor 上传的文件存放在哪里,以及允许上传哪些类型的文件。

  1. 编辑 php/config.json 这是后端最核心的配置文件,使用 UTF-8 编码打开它。

    {
        "imageUrl": "/ueditor/php/upload/image/", // "图片上传保存目录", // 配置图片上传路径
        "imagePath": "/ueditor/php/upload/image/", // "图片访问路径", // 配置图片访问路径
        // ... 其他配置项
        "imageFieldName": "upfile", // "图片上传参数名"
        "imageMaxSize": 2048000, // "图片大小限制,单位B",
        "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], // "上传图片格式显示",
        // ... 等等,还有文件、视频等配置项
    }

    关键配置项解释:

    ueditor1.4.3使用教程
    (图片来源网络,侵删)
    • imageUrl: 上传文件的保存目录,这是服务器上的一个物理路径,你需要确保这个目录存在并且有写入权限,如果你的网站根目录是 /var/www/html/,那么这里的路径应该是 /var/www/html/ueditor/php/upload/image/
    • imagePath: 上传文件的访问URL,这是通过浏览器访问图片时使用的URL路径,它通常与 imageUrl 对应,但需要是 Web 服务器可以公开访问的路径。http://your-domain.com/ueditor/php/upload/image/
    • imageMaxSize: 单位是字节,2048000 表示 2MB。
    • imageAllowFiles: 允许上传的图片文件后缀名列表。

    重要提示:

    • 路径问题imageUrl 必须是服务器上的绝对路径或相对于网站根目录的路径。imagePath 必须是以 开头的 Web 可访问路径。
    • 权限问题:确保 ueditor/php/upload/ 目录及其子目录有写入权限(在 Linux 系统下,权限通常设置为 755775)。
  2. 检查 php/controller.php 这个文件是后端的统一入口,通常不需要修改,它会根据前端请求,调用 php/action/ 目录下的相应 PHP 文件来处理上传、列表等操作。

前端页面配置

前端配置主要是初始化编辑器时,传入一些参数。

  1. 创建 HTML 页面 在你的 Web 项目中创建一个 HTML 文件,index.html

  2. 引入 JS 和 CSS 文件 在 HTML 文件的 <head> 中引入 UEditor 的 CSS 和 JS 文件,路径要正确。

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>UEditor 使用示例</title>
        <!-- 引入 UEditor 的 CSS 文件 -->
        <link rel="stylesheet" href="ueditor/themes/default/css/ueditor.min.css">
        <!-- 引入 jQuery (UEditor 1.4.3 依赖 jQuery) -->
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <!-- 实例化编辑器 -->
        <script id="editor" type="text/plain" style="width:1024px;height:500px;"></script>
        <!-- 配置文件 -->
        <script type="text/javascript" src="ueditor/ueditor.config.js"></script>
        <!-- 编辑器源码文件 -->
        <script type="text/javascript" src="ueditor/ueditor.all.js"></script>
        <!-- 实例化编辑器 -->
        <script type="text/javascript">
            // 1.4.3 版本推荐使用 UE.getEditor 来实例化
            var ue = UE.getEditor('editor');
        </script>
    </body>
    </html>

第三步:基本集成与使用

打开你创建的 index.html 文件,你应该能看到一个功能完整的富文本编辑器了,你可以直接在编辑器里输入文字、设置格式、插入图片等。

获取编辑器内容

这是最常用的操作,通常在表单提交时,需要获取编辑器里的 HTML 内容。

// UE.getEditor 返回的实例对象
var editor = UE.getEditor('editor');
// 监听编辑器“ready”事件,确保编辑器初始化完成
editor.ready(function() {
    // 通过 getContent() 方法获取编辑器中的内容
    function getContent() {
        var content = editor.getContent();
        console.log('获取到的编辑器内容是:', content);
        // 这里可以将 content 发送到服务器
        // $.post('/save-content', {content: content}, function(response){ ... });
    }
    // 假设有一个按钮来触发获取内容
    // <button onclick="getContent()">获取内容</button>
});

第四步:常用功能与配置详解

ueditor.config.js 配置项

这个文件是前端的核心配置,默认配置项已经很全面,你可以根据需要进行修改。

// ueditor.config.js
window.UEDITOR_CONFIG = {
    // 为编辑器实例添加一个路径,这个路径会被用到编辑器初始化的样式中
    UEDITOR_HOME_URL: URL + 'ueditor/', // URL 即为你当前页面的路径,通常会自动计算
    // 编辑器不自动被内容撑高
    autoHeightEnabled: false,
    // 初始高度
    initialFrameHeight: 500,
    // 初始宽度
    initialFrameWidth: 1024,
    // 关闭自动保存
    enableAutoSave: false,
    // 工具栏上的所有的功能按钮和下拉框,可以在new编辑器实例时选择自己需要的从新定义
    , toolbars: [
        ['fullscreen', 'source', '|', 'undo', 'redo', '|',
         'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
         'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
         'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
         'directionalityltr', 'directionalityrtl', 'indent', '|',
         'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|',
         'touppercase', 'tolowercase', '|',
         'link', 'unlink', 'anchor', '|',
         'imagenone', 'imageleft', 'imagecenter', 'imageright', 'imagefloatnone', '|',
         'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',
         'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',
         'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
         'print', 'preview', 'searchreplace', 'help', 'drafts']
    ]
};

常用配置项:

  • UEDITOR_HOME_URL: 非常重要,必须指向 UEditor 文件夹的 URL 路径,如果页面和 UEditor 在同一级,通常默认即可。
  • initialFrameHeight / initialFrameWidth: 设置编辑器的初始宽高。
  • toolbars: 自定义工具栏,你可以通过增减数组中的元素来显示或隐藏按钮,如果你想简化工具栏:
    toolbars: [
        ['source', 'undo', 'redo', '|',
         'bold', 'italic', 'underline', 'fontfamily', 'fontsize', '|',
         'justifyleft', 'justifycenter', 'justifyright', '|',
         'insertimage', 'inserttable', 'link']
    ]

初始化编辑器实例

UE.getEditor() 是官方推荐的实例化方法。

// 参数1: 容器的 id 或 name
// 参数2: 可选的配置对象,会覆盖 ueditor.config.js 中的配置
var editor = UE.getEditor('editor', {
    initialContent: '欢迎使用 UEditor!', // 初始化内容
    autoHeightEnabled: true, // 自动高度
    toolbars: [['bold', 'italic']] // 只显示这两个按钮
});
// 使用回调函数
UE.getEditor('editor', {
    onready: function () {
        this.setContent('编辑器已经准备就绪,这是动态设置的内容。');
    }
});

第五步:高级功能与自定义

自定义工具栏按钮

如果你想在工具栏上添加一个自定义按钮(插入一个特定的 HTML 片段),可以这样做:

  1. 修改 toolbars 配置,添加你的按钮名,mybutton

    // 在 ueditor.config.js 中
    window.UEDITOR_CONFIG.toolbars = [['mybutton', 'bold', 'italic']];
  2. 注册命令,在页面中,在实例化编辑器之前,注册你的按钮对应的命令。

    <script type="text/javascript">
        // 1. 注册命令
        UE.commands['mybutton'] = {
            execCommand: function (cmd, name, opts) {
                // 当点击按钮时,这里面的代码会被执行
                var html = '<div style="background-color: yellow; padding: 10px;">这是一个自定义插入的内容!</div>';
                // 获取当前选区
                var range = editor.selection.getRange();
                // 插入 HTML
                range.insertNode(range.createContextualFragment(html));
            }
        };
        // 2. 实例化编辑器
        var editor = UE.getEditor('editor');
    </script>

监听编辑器内容变化

变化可以实现实时保存等功能。

var editor = UE.getEditor('editor');
editor.addListener('contentChange', function () {
    console.log('编辑器内容已发生变化!');
    var content = editor.getContent();
    // 可以在这里执行 AJAX 请求,实现自动保存
    // saveContent(content);
});

从服务器获取内容

编辑器初始化后,可以从服务器加载内容并显示。

var editor = UE.getEditor('editor');
editor.ready(function () {
    // 模拟从服务器获取数据
    $.ajax({
        url: '/get-content-from-server',
        type: 'GET',
        success: function (data) {
            // 使用 setContent 方法设置内容
            // 'html' 表示传入的是 HTML 字符串
            editor.setContent(data.content, 'html');
        },
        error: function () {
            console.error('获取内容失败');
        }
    });
});

常见问题与解决方案

上传图片失败

这是最常见的问题,通常由以下几个原因导致:

  1. 路径错误:检查 php/config.json 中的 imageUrlimagePathimageUrl 必须是服务器上存在的、有写权限的物理路径。
  2. 权限问题:确保 ueditor/php/upload/ 目录有 Web 服务器进程(如 www-data, apache, nginx)的写入权限。
    • Linux/Mac: chmod -R 755 /path/to/your/upload/dir
    • Windows: 右键文件夹 -> 属性 -> 安全 -> 编辑权限。
  3. 跨域问题:如果你的前端页面和 UEditor 后端不在同一个域下,可能会遇到跨域问题。
    • 解决方案:编辑 php/action_cors.php 文件,取消注释并根据你的域名进行配置。
  4. PHP 配置问题:检查 php.ini 文件中的以下配置项,确保上传的文件大小和类型被允许。
    • file_uploads = On
    • upload_max_filesize = 32M (根据需要调整)
    • post_max_size = 32M (通常需要大于或等于 upload_max_filesize)
  5. 网络请求被拦截:检查浏览器控制台(F12)的 Network 面板,查看上传请求是否发出,以及服务器返回了什么错误信息(通常是 500 或 404 错误)。

样式不生效

  1. CSS 路径错误:确保在 HTML 中正确引入了 ueditor/themes/default/css/ueditor.min.css
  2. 自定义样式冲突:检查你的页面 CSS 是否意外覆盖了 UEditor 的样式,可以使用浏览器开发者工具(F12)检查元素的样式来源。
  3. 编辑器渲染问题:有时编辑器内容需要重新渲染,可以调用 editor.render() 方法。

总结与最佳实践

  1. 版本选择:1.4.3 是一个稳定的选择,但如果你的项目是新开发的,可以考虑更新版本的 UEditor 或其他现代化的编辑器(如 TinyMCE, CKEditor 5, Quill.js)。
  2. 安全第一:从编辑器获取的内容是用户输入,绝对不能直接存入数据库并原样输出到页面,否则极易遭受 XSS(跨站脚本)攻击,必须对内容进行转义或过滤处理,大多数后端框架都提供了相应的安全函数。
  3. 前后端分离:UEditor 1.4.3 的后端是 PHP,如果你的后端是 Java, Node.js, Python 等,你需要使用 UEditor 官方提供的后端版本,或者自己根据其 API 规范来实现,后端的核心逻辑都是一样的:接收文件、验证、保存、返回 URL。
  4. 性能考虑ueditor.all.js 文件较大,包含了所有功能,如果你的编辑器不需要某些功能(如代码高亮、图表等),可以考虑使用 ueditor.custom.js 来定制一个更小的版本。
  5. 调试技巧:遇到问题时,善用浏览器开发者工具的 ConsoleNetwork 面板,Console 可以显示 JS 错误,Network 可以显示与后端交互的请求和响应,这是定位问题的关键。

希望这份详细的教程能帮助你顺利地在项目中使用 UEditor 1.4.3!