HTML——实现富文本编辑器wangEditor的使用
文章目录
- HTML——实现富文本编辑器wangEditor的使用
- 一.导入wangEditor.JS
- 二.直接引用文档链接
- 三.包管理工具(node和bower 的下载)
- Node.js下载安装及环境配置
- bower的安装和使用
- 引入实现
背景:最近在写小说项目,关于发布文章需要用到富文本编辑器,由于还没学到Vue,最实用的还是用wangEditor富文本编辑器。
官方文档:http://www.wangeditor.com/
使用手册:创建一个编辑器 · wangEditor3使用手册 · 看云 (kancloud.cn)
至于实现的方式有三种:
一.导入wangEditor.JS
使用方法: wangEditor.min.js,通过手工导入的方式放在项目的静态文件下来引用。
-
下载地址1: https://github.com/wangfupeng1988/wangEditor/releases
-
下载地址2:wangEditor.min.js
由于在官网上没找到,也不想付费下载,就没有用这个方法。这个应该是最简单的方法,只需要用相对路径引用一下即可。
二.直接引用文档链接
优点:引用简单。
缺点:对网络要求较高。
引入链接的网址:https://www.bootcdn.cn/wangEditor/
尝试:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="../imgs/logo.png" type="image/x-icon">
<title>小说创作页面</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/wangEditor/10.0.13/fonts/w-e-icon.woff">
<link href="https://cdn.bootcdn.net/ajax/libs/wangEditor/10.0.13/wangEditor.min.css" rel="stylesheet">
<link href="https://cdn.bootcdn.net/ajax/libs/wangEditor/10.0.13/wangEditor.css" rel="stylesheet">
<style>
.mainHeader {
padding-top: 1px;
padding-bottom: 1px;
background-color: white !important;
border-bottom: 5px solid #0b6cb8;
}
.logo_icon {
height: 38px;
}
.liColor {
color: #4f4f4f
}
.toolbar {
border: 1px solid #ccc;
}
.text {
border: 1px solid #ccc;
height: 500px;
}
</style>
</head>
<body style="background-color: whitesmoke">
<div class="container-fluid">
<!-- 顶部导航栏-->
<div class="row">
<div class="col-md-12" style="padding: 0">
<nav class="navbar navbar-expand-lg navbar-light bg-light mainHeader">
<!-- <a class="navbar-brand" href="#">Navbar w/ text</a>-->
<!-- <div class="logoDiv" id="logoIcon" style="cursor:pointer">
<img class="logo_icon" src="logo_icon_white.png" />
</div>
<div class="logoDiv" id="logoText">
<img class="logo_icon" src="logo_text_white.png" />
</div> -->
<div class="collapse navbar-collapse" id="navbarText">
<ul class="navbar-nav mr-auto">
<!-- <li class="nav-item" style="padding-left: 20px">-->
<!-- <a class="nav-link nav-item" href="#">首页 </a>-->
<!-- </li>-->
</ul>
<span class="navbar-nav">
<a class="nav-link navbar-item active" href="#">个人中心</a>
</span>
</div>
</nav>
</div>
</div>
<div class="row" style="min-height: 10px"></div>
<div class="row">
<div class="col-md-1">
</div>
<div class="col-md-2" style="padding-right: 0px">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-9">
<div class="card">
<ul class="nav nav-pills nav-fill flex-column">
<li class="nav-item">
<a class="nav-link active list-group-item" href="#">发布文章</a>
</li>
<li class="nav-item">
<a class="nav-link liColor list-group-item" href="#">文章管理</a>
</li>
<li class="nav-item">
<a class="nav-link liColor list-group-item" href="#">分类管理</a>
</li>
<li class="nav-item">
<a class="nav-link liColor list-group-item" href="#">退出</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-6" style="padding-left: 0px">
<div class="card">
<div class="card-header" style="background-color: white">
<div class="row">
<div class="col-md-3" style="font-size: 18px">发布文章</div>
<!-- <div class="col-md-9" style="margin-top: 8px;font-size: 12px;text-align: right">当前位置>专委会介绍>文件资料</div>-->
</div>
</div>
<div class="card-body" style="min-height: 1000px">
<div class="row">
<div class="col-md-12">
<div class="input-group mb-1 mt-2 ml-0 mr-1">
<div class="input-group-prepend">
<span class="input-group-text">文章标题</span>
</div>
<input id="titleInput" type="text" class="form-control" placeholder="不多于100字"
style="margin-right: 5px">
</div>
</div>
</div>
<div style="padding: 8px 0; color: #ccc"></div>
<div id="div1" class="toolbar">
</div>
<div id="div2" class="text"> <!--可使用 min-height 实现编辑区域自动增加高度-->
<!-- <p>请输入内容</p>-->
</div>
<div class="row">
<div class="col-md-5">
<div class="input-group mb-3 mt-3 ml-0">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-default">文章分类</span>
</div>
<input id="categoryInput" type="text" class="form-control">
</div>
</div>
</div>
<div class="row" style="padding: 15px">
<div class="col-md-1"></div>
<div class="col-md-2 ml-0">
<button type="button" class="btn btn-primary" id="publishBtn">发布文章</button>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-light">返回</button>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-2">
</div>
</div>
</div>
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
<script>
$(function () {
//富文本编辑器初始化代码
var E = window.wangEditor;
var editor = new E('#div1', '#div2');
editor.customConfig.uploadImgShowBase64 = true; // 使用 base64 保存图片
editor.create();
//创建replaceAll()函数,用于替换字符串中出现的所有某个字符
String.prototype.replaceAll = function (FindText, RepText) {
return this.replace(new RegExp(FindText, "g"), RepText);
};
//发布文章按钮的点击事件,即封装数据,向后台传递
$("#publishBtn").click(function () {
console.info("click");
var postData = {};
postData.title = $("#titleInput").val();
postData.category = $("#categoryInput").val();
//替换双引号为两个单引号,方便编写SQL语句插入数据库中
var content = editor.txt.html().replaceAll("\"", "\'\'");
postData.content = content;
console.info(content);
postData.author_acc = "123";
postData.author_name = "admin";
postData.create_time = new Date().toLocaleDateString();
postData.last_edit_time = new Date().toLocaleDateString();
console.info(postData);
//向后台传递数据,需要根据具体后台来改
$.post("http://localhost:8099/publishArticle", postData, function (data) {
alert(data);
})
})
})
</script>
<script src="https://cdn.bootcdn.net/ajax/libs/wangEditor/10.0.13/wangEditor.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/wangEditor/10.0.13/wangEditor.min.js.map"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/wangEditor/10.0.13/wangEditor.js"></script>
<script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</body>
</html>
效果如下:
说明:
这里的代码参照博客(55条消息) html——简单文章发布html页面及富文本编辑器wangEditor的使用发布文章html页面知北行的博客-CSDN博客进行尝试。
三.包管理工具(node和bower 的下载)
步骤如下:
- Node.js下载安装及环境配置
- bower的安装
- 开始引入实现
Node.js下载安装及环境配置
参考博客,超级详细
(55条消息) Node.js下载安装及环境配置教程【超详细】_nodejs安装及环境配置_WHF__的博客-CSDN博客
bower的安装和使用
参考博客,超级详细
(55条消息) bower的安装和使用_bower install_艾希ღ的博客-CSDN博客
选择性的看安装教程即可
在我安装bower的时候遇到了一些问题。
问题一:npm 安装完bower 后,提示’bower’ 不是内部或外部命令
解决办法:
1.可能是node配置环境出了问题
(55条消息) npm 安装完bower 后,提示’bower’ 不是内部或外部命令_前端开发小蜜蜂(诗语)的博客-CSDN博客
2.也可能是,下载的cnpm,输入命令之类的用cnpm而不是npm。这里引入一篇博客,讲述cnpm和npm的区别
(55条消息) npm 和 cnpm 的区别_npm cnpm_我想做阿信的博客-CSDN博客
** 问题二:CDN 访问不成功**
解决办法:
操作如下:
引入实现
这里先粘贴一下我的成果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link href="../css/style.css" rel="stylesheet">
<style>
#editor—wrapper {
border: 1px solid #808080;
z-index: 100;
/* 按需定义 */
}
#toolbar-container {
border-bottom: 1px solid #808080;
}
#editor-container {
height: 600px;
}
</style>
</head>
<body>
<div id="editor—wrapper">
<div id="toolbar-container"><!-- 工具栏 --></div>
<div id="editor-container"><!-- 编辑器 --></div>
</div>
</body>
<script src="../js/index.js"></script>
<script>
const { createEditor, createToolbar } = window.wangEditor
const editorConfig = {
placeholder: 'Type here...',
onChange(editor) {
const html = editor.getHtml()
console.log('editor content', html)
// 也可以同步到 <textarea>
}
}
const editor = createEditor({
selector: '#editor-container',
html: '<p><br></p>',
config: editorConfig,
mode: 'default', // or 'simple'
})
const toolbarConfig = {}
const toolbar = createToolbar({
editor,
selector: '#toolbar-container',
config: toolbarConfig,
mode: 'default', // or 'simple'
})
</script>
<html>
效果如下:
这里仿照的就是wangEditor官方文档的代码
快速开始 | wangEditor
对富文本编辑器wangEditor的实现就介绍到这里了,对于使用和一些其他的配置可以参照官方文档。