您好,登錄后才能下訂單哦!
小編給大家分享一下JS中富文本編輯器TinyMCE的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、題外話
最近負責了一個cms網站的運維,里面存在很多和編輯器有關的問題,比如編輯一些新聞博客,論文模塊。系統采用的是FCKEditor,自我感覺不是很好,如下圖
特別是在用戶想插入一個圖片的話,就很麻煩,所有用戶共享一個文件目錄,這樣就不好了,于是便想到了TinyMCE編輯器,博客園默認的也是這個編輯器,接下
來,我們開始吧
二、TinyMCE編輯器集成步驟
2.1:下載相關文件
(1)下載TinyMCE插件包
下載地址,如下圖所示,下載開發版
(2)下載其他功能包
包括中文語言包zh_CN.js,圖片上傳操作需要的plugin.min.js和jquery.form.js
這一點很重要,很重要,很重要哦
下載完成后如下圖所示
2.2:操作步驟
(1):復制TinyMCE到項目中
解壓下載到的tinymce_4.6.4_dev.zip,解壓后會有一個tinymce文件夾,將整個文件夾放到WebContent目錄下,目錄結構如下圖所示
(2):頁面集成TinyMCE
在頁面的JS標簽中初始化TinyMCE編輯器,代碼如下所示
<script type="text/javascript"> tinymce.init({ selector: "textarea", upload_image_url: './upload', //配置的上傳圖片的路由 height: 400, language:'zh_CN', plugins: [ 'advlist autolink lists link charmap print preview hr anchor pagebreak', 'searchreplace wordcount visualblocks visualchars code fullscreen', 'insertdatetime media nonbreaking save table contextmenu directionality', 'emoticons template paste textcolor colorpicker textpattern imagetools codesample toc help' ], toolbar1: 'undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', toolbar2: 'print preview media | forecolor backcolor emoticons | codesample help', image_advtab: true, templates: [ { title: 'Test template 1', content: 'Test 1' }, { title: 'Test template 2', content: 'Test 2' } ], menubar: false }); </script>
運行如下圖所示,基本的集成已經完畢
三、TinyMCE編輯器本地上傳圖片功能
注:默認的TinyMCE是沒有上傳本地圖片到服務器的功能的,所以這里我們需要自己實現,下面我們就說一說具體的實現步驟
3.1:集成uploadimage插件
在./tinymce/js/tinymce/plugins目錄下新建一個uploadimage目錄,放入下載的plugin.min.js,目錄結構如下圖所示
3.2:在TinyMCE初始化中添加上傳圖片按鈕
代碼如下圖所示,需要注意的是在plugins中和toobar2中都需要加入uploadimage,toolbar1代表第一行菜單,toolbar2代表第二行菜單,次初始化代碼是來自 https://www.tinymce.com/docs/demo/full-featured/ 官網一個完整的例子,功能按鈕大家可以試著去除或者添加
tinymce.init({ selector: "textarea", upload_image_url: './upload', //配置的上傳圖片的路由 height: 400, language:'zh_CN', plugins: [ 'advlist autolink lists link charmap print preview hr anchor pagebreak', 'searchreplace wordcount visualblocks visualchars code fullscreen', 'insertdatetime media nonbreaking save table contextmenu directionality', 'emoticons template paste textcolor colorpicker textpattern imagetools codesample toc help uploadimage' ], toolbar1: 'undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', toolbar2: 'print preview media | forecolor backcolor emoticons | codesample help uploadimage', image_advtab: true, templates: [ { title: 'Test template 1', content: 'Test 1' }, { title: 'Test template 2', content: 'Test 2' } ], menubar: false });
再次運行,發現在編輯器的菜單欄多了一個圖片的按鈕就是上傳圖片了(TinyMCE默認有一個image,可以去掉,因為那個image只可以給網絡圖片的URL),總這里plugins里面
已經把默認的image去掉了,如下圖
3.3:實現上傳本地圖片到服務器的功能
前提:需要先用java實現一個upload工具類,此工具類可以完成本地圖片上傳到服務器,并返回圖片的URL給ajax,ajax在success的方法中接收URL并向TinyMCE中插入一個image標簽
JS核心代碼如下,已包含在plugin.min.js文件中,這里注意TinyMCE的版本不用命令可能會有差異
success: function (data) { //alert('2222'); //alert(data); if (data!=null) { //alert('4444'); editor.focus(); //tinyMCE 4.X版本的插入對象 tinyMCE.activeEditor.insertContent('<img src="'+data+'"></img>'); // editor.selection.setContent(dom.createHTML('img', {src: src})); // data.file_path.forEach(function (src) { // editor.selection.setContent(dom.createHTML('img', {src: src})); // }) }
ajax提交form表單的操作中還用到了form.ajaxSubmit,所以需要在編輯器的頁面引入jquery.form.js 包,整體如下所示
<script type="text/javascript" src="./tinymce/js/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="./tinymce/js/tinymce/tinymce.min.js"></script> <script type="text/javascript" src="./tinymce/js/tinymce/jquery.tinymce.min.js"></script> <script type="text/javascript" src="./tinymce/js/jquery.form.js"></script>
實現效果,點擊圖片上傳可以從本地選擇圖片文件,確定后ajax異步上傳,并且返回圖片的URL,讓TinyMCE執行插入img標簽的操作
四:演示一個編輯器發布網頁內容的例子
4.1:添加發布按鈕
在編輯器頁面下面添加一個發布文章的按鈕,定義onclick事件為GetTinyMceContent()
function GetTinyMceContent() { // <!-- // http request方式b_content的參數不能太長,太長會截斷,這里只是做演示編輯器,真實情況是獲取到內容到數據庫然后 // 展示的時候在頁面遍歷數據庫字段content的內容 // --> //alert('11'); window.location.href="blog.jsp?b_content="+tinyMCE.activeEditor.getContent(); }
4.2:添加文章顯示頁面
如下圖所示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>文章內容-HTML</title> </head> <body> <h3 align="center">我的第一篇博文</h3> <%= request.getParameter("b_content") %> </body> </html>
4.3:運行效果
在編輯器輸入一些內容,并上傳一個圖片,如下圖示
點擊發布文章的按鈕,如下圖所示,發布成功可以在網頁查看文章的輸出格式,大功已經告成!
以上是“JS中富文本編輯器TinyMCE的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。