婳阳富文本编辑器 (HuayangEditor) 外站引用使用说明

admin 8 1 13 2026-03-21 01:28:01
admin
#1 发表于 2026-03-21 01:28:01

1. 简介

婳阳富文本编辑器 (HuayangEditor) 是一款轻量级、功能完备、可被外部网站直接引用的富文本编辑器。它支持常见的格式化功能(加粗、斜体、下划线、标题、引用、列表、对齐等),还提供了高级功能如站外引用卡片、代码块、表格、字体颜色/大小、视频插入、表情符号、源码编辑等。编辑器被封装为一个独立的 JavaScript 库,您只需在页面中引入,即可在任何元素上初始化。

2. 快速上手

2.1 引入依赖

在您的 HTML 页面中,首先需要引入 Font Awesome 图标库(用于工具栏图标)和 HuayangEditor 核心库

html
<!-- Font Awesome 图标库 (必需) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">

<!-- 引入编辑器核心库 (请将路径替换为实际存放的位置) -->
<script src="path/to/HuayangEditor.js"></script>

注意:HuayangEditor.js 需要您从服务器获取,例如 http://hy.168hot.cn/fuwenben/HuayangEditor.js

2.2 创建容器

在需要放置编辑器的位置添加一个元素(如 <div>),作为编辑器的容器。

html
<div id="editor-container"></div>

2.3 初始化编辑器

在页面加载完成后,使用 new HuayangEditor() 初始化编辑器。可以传递配置选项。

html
<script>
    const editor = new HuayangEditor('#editor-container', {
        height: 400,                // 编辑区最小高度 (像素)
        placeholder: '请输入内容...', // 占位文本
        initialContent: ''           // 初始内容(如有保存的内容,可在此传入)
    });
</script>

2.4 配置选项说明

选项类型默认值说明heightnumber400编辑区最小高度(像素)placeholderstring'请输入内容...'占位文本initialContentstring''初始 HTML 内容,可用于恢复之前保存的内容

3. API 方法

编辑器实例提供了以下常用方法:

3.1 获取内容

javascript
const html = editor.getContent();

返回编辑器内容的完整 HTML 字符串,包含所有格式标签。

3.2 设置内容

javascript
editor.setContent('<h2>新标题</h2><p>新内容...</p>');

用指定的 HTML 替换编辑器当前内容,光标会自动移动到末尾。

3.3 监听内容变化

javascript
editor.on('change', function() {
    console.log('编辑器内容已变化');
});

当用户输入或通过工具栏修改内容时触发。

3.4 销毁编辑器

javascript
editor.destroy();

移除编辑器 DOM 和事件监听,释放资源。

4. 外部展示内容(解决样式丢失问题)

当您将编辑器内容保存到数据库后,在其他页面(如文章详情页)展示时,可能会遇到样式丢失的问题(引用块、代码块、卡片等显示为普通文本)。这是因为展示页面缺少了编辑器内置的 CSS 样式。

HuayangEditor 提供了静态方法 getDisplayStyles(),用于获取展示内容所需的核心样式。请按以下步骤操作:

4.1 在展示页引入样式

在展示页的 <head> 中,输出 HuayangEditor.getDisplayStyles() 返回的 CSS 字符串。

PHP 示例

php
<style>
    <?php echo HuayangEditor::getDisplayStyles(); ?>
</style>

JavaScript 示例(如果在浏览器环境):

html
<script>
    const style = document.createElement('style');
    style.textContent = HuayangEditor.getDisplayStyles();
    document.head.appendChild(style);
</script>

4.2 将内容包裹在指定容器中

展示内容需要被一个带有 class="huayang-editor-content" 的容器包裹。

html
<div class="huayang-editor-content">
    <?php echo $content; ?>  <!-- 从数据库获取的编辑器内容 -->
</div>

4.3 完整示例

html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文章详情</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        <?php echo HuayangEditor::getDisplayStyles(); ?>
    </style>
</head>
<body>
    <div class="huayang-editor-content">
        <?php echo $content; ?>
    </div>
</body>
</html>

注意:如果展示页不需要 Font Awesome 图标(例如站外引用卡片中的图标),可以省略引入,但卡片中的图标将显示为空白。建议保留引入以获得完整效果。

5. 站外引用卡片功能详解

站外引用卡片是 HuayangEditor 的特色功能,用于插入带来源链接和可编辑引用文字的卡片,非常适合转载、参考文献标注等场景。

5.1 插入卡片

在编辑器中,点击工具栏的蓝色 “站外引用” 按钮,会依次弹出两个输入框:

  1. 来源网址:输入外部链接(如 https://example.com/article)。

  2. 引用说明:输入对这段引用的说明或摘录(可选,留空则显示默认占位文字)。

确认后,编辑器会在光标位置生成一张精美的卡片:

html
<div class="external-ref-card" contenteditable="false">
    <div class="ref-source" contenteditable="false">
        <i class="fas fa-cloud-download-alt"></i> <span>来源:</span>
        <a href="..." target="_blank">...</a>
    </div>
    <div class="ref-quote-text" contenteditable="true">引用说明...</div>
    <p style="font-size:0.8rem; color:#7b8ba5; text-align:right;" contenteditable="false">
        <i class="far fa-comment-dots"></i> 可编辑引用文字
    </p>
</div>

卡片特点:

  • 来源链接:可点击,在新窗口打开。

  • 引用文字:可直接编辑(卡片内的 ref-quote-text 区域可编辑)。

  • 卡片结构:卡片边框不可编辑,保持整体布局。

5.2 在展示页正确显示卡片

确保您已经按照第 4 节的方法引入了展示样式,并包裹了内容容器。卡片样式已包含在 getDisplayStyles() 返回的 CSS 中。

6. 常见问题及解决

6.1 点击工具栏按钮导致页面刷新

如果编辑器被放置在一个 <form> 标签内,且按钮未设置 type="button",可能触发表单提交导致刷新。HuayangEditor 已将所有按钮设为 <div> 模拟按钮,并阻止了默认事件,一般不会出现此问题。若仍遇到,请检查外部页面是否有额外的 JavaScript 拦截事件。

6.2 初始化后不显示之前保存的内容

在初始化编辑器时,请使用 initialContent 选项传入保存的 HTML:

javascript
const editor = new HuayangEditor('#container', {
    initialContent: '<?php echo addslashes($savedContent); ?>'
});

如果直接使用 setContent,应在编辑器初始化完成后调用。

6.3 图标太大或太小

编辑器的图标大小默认设置为 0.9rem。如需调整,可以自定义 CSS 覆盖:

css
.huayang-editor-toolbar .tool-btn i {
    font-size: 1rem !important; /* 改为期望大小 */
}

6.4 主题切换

编辑器支持四种主题(默认、暗夜、海洋、森林)。您可以在初始化后通过 URL 参数或 Cookie 切换主题(参考演示网站)。主题仅影响编辑器外观,不影响保存的内容。

7. 完整示例代码

以下是一个完整的外站引用示例页面,包含编辑器初始化、保存内容、以及外部展示的演示。

7.1 编辑器页面 (edit.php)

php
<?php
// 假设从数据库获取之前保存的内容
$savedContent = '<h2>示例内容</h2><p>之前保存的文本</p>';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>编辑文章</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <script src="http://hy.168hot.cn/fuwenben/HuayangEditor.js"></script>
</head>
<body>
    <h1>编辑文章</h1>
    <div id="editor"></div>
    <button onclick="saveContent()">保存内容</button>

    <script>
        const editor = new HuayangEditor('#editor', {
            height: 400,
            placeholder: '在这里写文章...',
            initialContent: <?php echo json_encode($savedContent); ?>
        });

        function saveContent() {
            const content = editor.getContent();
            // 通过 AJAX 将 content 发送到服务器保存
            console.log('保存的内容:', content);
            // 示例:fetch('/save.php', { method: 'POST', body: content })
        }
    </script>
</body>
</html>

7.2 展示页面 (view.php)

php
<?php
// 从数据库获取保存的内容
$content = '<div class="external-ref-card" contenteditable="false">......</div>'; // 实际从数据库读取
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文章详情</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        <?php
        // 直接输出 HuayangEditor 的展示样式(需确保 HuayangEditor 类已加载)
        if (class_exists('HuayangEditor')) {
            echo HuayangEditor::getDisplayStyles();
        } else {
            // 如果不使用 PHP 环境,也可以将样式字符串直接复制到此处
        }
        ?>
    </style>
</head>
<body>
    <div class="huayang-editor-content">
        <?php echo $content; ?>
    </div>
</body>
</html>

8. 注意事项

  • 确保 HuayangEditor.js 路径正确,且服务器支持跨域访问(如果需要)。

  • Font Awesome 必须引入,否则工具栏图标无法显示。

  • 在展示页面,如果不需要 Font Awesome 图标,可以省略,但站外引用卡片中的图标将不可见。

  • 保存到数据库时,建议对内容进行 XSS 过滤(例如使用 HTML Purifier),防止恶意脚本注入。

  • 如需进一步定制样式,可覆盖 huayang-editor-content 内部的 CSS 类。

9. 技术支持

如果您在使用过程中遇到任何问题,欢迎访问官方网站或联系开发者。本编辑器基于 MIT 协议开源,您可以自由使用、修改和分发。


文档版本: v2.2.2
更新日期: 2026-03-20
在线演示: http://hy.168hot.cn/fuwenben/

登录 后参与讨论