富文本編輯器在線(富文本編輯器官網(wǎng))
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于富文本編輯器在線的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具:開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、ios富文本編輯器
方案 :html+wkwebview,支持加粗、下劃線、斜體、對齊方式、字體更改顏色、插入圖片、插入視頻、插入鏈接、清除格式、撤回上一個操作
核心 :利用html5新特性contenteditable,當div的contenteditable為true時,div進入編輯狀態(tài),可以通過執(zhí)行html5的命令對文本進行操作。命令文檔地址:https://developer.mozilla.org/zh-TW/docs/Web/API/Document/execCommand。
具體實現(xiàn) :
一:文件目錄
1.editor.html,該文件實現(xiàn)了編輯器的節(jié)點骨架,一個contenteditable為true的div。
2.ZJSTextEditor.js,該文件是編輯器的核心內(nèi)容,主要實現(xiàn)編輯器的各種操作,以插入視頻為例,外部的wkwebview只需要執(zhí)行js方法evaluateJavaScript:‘zss_editor.insertVideo(...)’,將url帶入
3.EditorView這個文件主要是放wkwebview,以及wkwebview調(diào)用ZJSTextEditor.js中js方法的部分。如頁面加載完,設置占位文字,或者默認對一些標簽的處理
二:開發(fā)中產(chǎn)品提出的需求和我的設計方案
1.web端要求dom結構為<p>...</p> <p>...</p> <p>...</p> <p>...</p> <p>...</p>,也就是n個p里包含著你插入的視頻圖片等子節(jié)點?
我的方案:
1.1:在editor.html文件中插入的div中,插入一個默認的空p標簽<p><br></p>,這樣會保證你在文字中間插入圖片、視頻或者換行時,系統(tǒng)給你新增一個p標簽包裹而不是div標簽
1.2:在插入圖片后加入一個空p,在文字中間插入視頻后加入一個空的p和br再刪除br,插入br是為了在文字中間插入視頻時,讓系統(tǒng)自動給你補全p標簽,否則視頻會被加在該文字的下一行。
2.每個圖片要緊緊跟隨一個圖片輸入框,且圖片輸入框支持粘貼,且圖片和圖片輸入框可以通過某個按鈕同時被刪除?
我的方案:
圖片有三個途徑添加,第一個是粘貼來的新聞中帶有圖片,第二個是自己插入的圖片,第三個是從html剛剛開始加載時自帶圖片(從web端發(fā)布的文章,在ios端編輯)。
2.1:每個圖片要緊緊跟著一個圖片輸入框,我在三個途徑處分別做了圖片的處理,首先是自己插入的圖片,我在插入圖片時,緊接著插入一個textarea標簽和一個p標簽。插入一個p標簽的目的是滿足需求1,其次是粘貼來的新聞和html剛剛加載自帶的圖片,我選擇遍歷所有的圖片標簽,首先檢查img標簽的name屬性是否有值,若沒有值,新增textarea標簽,并設置img標簽和textarea標簽的name屬性為同一個UUID,若name屬性有值,檢查它的后一個兄弟節(jié)點是否跟隨一個同name的dom,如果有且是i標簽(提交數(shù)據(jù)時,要將所有的輸入框變成i標簽,此刻要從i標簽變回輸入框),將它轉化成輸入框,如果沒有,添加默認輸入框。
2.2:圖片輸入框支持粘貼,textarea自帶粘貼
2.3:圖片和圖片輸入框可以通過某個按鈕同時被刪除,設置img標簽和textarea標簽的name屬性為同一個UUID,用name的原因是document.getElementsByName給的是該name的一組標簽,刪除時,只需要根據(jù)name刪除即可
3.從微信或者頭條粘貼過來的文章格式有誤,文字偏大或者偏小?
我的解決方案:
由于拿不到原文章的js,所以只能在粘貼時去除標簽內(nèi)的所有內(nèi)聯(lián)樣式。當然這個地方有個特殊情況要處理,比如用戶在編輯時,設置了對齊方式,系統(tǒng)會自動給標簽加上內(nèi)聯(lián)樣式,這個樣式我們不應該去掉。我的處理方案時自定義一個屬性名zjs-style,在用戶設置對齊方式時,將標簽的style值賦值給zjs-style,我們在合適的時機,根據(jù)zjs-style復原其style
4.輸入框在提交后變成不可輸入的展示區(qū)域?
我的解決方案:
在提交時,遍歷所有的textarea,若textarea沒有值,去掉該textarea,若有值的話,將該textarea替換成i標簽,且name值賦值給新的i。
5.從web端來的數(shù)據(jù)支持展示和再編輯?
我的解決方案:
在editor.html的div中加入默認占位文字<!-- defaultContent -->,在html資源加載前,將占位文字替換為后臺給的html內(nèi)容,并在網(wǎng)頁加載完后,做相關處理
調(diào)試工具 :
二、uniapp開發(fā)微信小程序富文本編輯器(樣式仿騰訊文檔)
照著騰訊文檔小程序開發(fā)了微信小程序富文本編輯器組件,這幾天做個整理,如有這個需求可以前往騰訊文檔小程序操作看看實際效果。畢竟參照的是微信自家小程序,無法做到百分百效果,只能按現(xiàn)有開放api盡可能實現(xiàn)。
項目地址:
https://github.com/chellel/wechat-editor-project
uniapp插件市場:
https://ext.dcloud.net.cn/plugin?id=6365
editor富文本編輯器組件官方文檔:
https://developers.weixin.qq.com/miniprogram/dev/component/editor.html
否則會受到小程序css影響。小程序本身editor標簽有css樣式:
editor {
display: block;
position: relative;
box-sizing: border-box;
-webkit-user-select: text;
user-select: text;
outline: 0;
overflow: hidden;
width: 100%;
height: 200px;
min-height: 200px;
}
that.updatePosition(keyboardHeight)
that.editorCtx.scrollIntoView()
在插入目標文字時,將值設為n',可以實現(xiàn)換行
this.editorCtx.insertText({ text: 'n' });
參考:請問editor組件控制拉起鍵盤操作支持嗎?
https://developers.weixin.qq.com/community/develop/doc/0006eeb6ae8cf0e7f3293e13f56400?highLine=editor%25E6%2598%25BE%25E7%25A4%25BA%25E9%2594%25AE%25E7%259B%2598
小程序技術專員-sanford 2019-09-20
不支持的。iOS無法通過接口拉起鍵盤,必須用戶點擊;安卓則可以。所以,終究是不一致,不行。。
該組件主要為微信editor組件的api調(diào)用集成封裝,因此受到的限制同文檔描述一致,即編輯器內(nèi)支持部分 HTML 標簽和內(nèi)聯(lián)樣式,不支持class和id,支持的標簽詳見: https://developers.weixin.qq.com/miniprogram/dev/component/editor.html 。
不滿足的標簽會被忽略,<div>會被轉行為<p>儲存。
這也是為什么在做富文本解析時,僅僅用rich-text組件無法有效還原h(huán)tml內(nèi)容,在解析內(nèi)容的時候就需要將內(nèi)容中的HTML標簽轉換成微信小程序所支持的標簽。因此最好方式是引入市場封裝好的富文本解析插件去解析html。
所以,開發(fā)者需要自行權衡在做富文本編輯開發(fā)時,是否使用微信自帶的editor組件,或者參考騰訊文檔小程序采用webview內(nèi)嵌網(wǎng)頁等方式去渲染。
小程序富文本編輯器editor初體驗:( https://www.jianshu.com/p/a932639ba7a6 )
如果是微信原生開發(fā),將demo組件中的相關dom元素標簽和api換成微信原生即可。
三、富文本編輯器如何實現(xiàn)部分內(nèi)容不可編輯,部分內(nèi)容可編輯
1、首先打開富文本編輯器并登錄自己的賬號。
2、其次點擊編輯設置。
3、最后店部分內(nèi)容不可編輯,部分內(nèi)容可編輯即可。
四、富文本編輯器-1-選型
團隊的業(yè)務多為后臺管理系統(tǒng),部分業(yè)務需要使用富文本編輯器。早期團隊選用了百度編輯器,但存在bug多、無人維護、擴展性差等問題,且后續(xù)業(yè)需要更靈活的編輯器。為了解決這些問題,決定重選編輯器。
基于以下原因,筆者決定使用Quill來開發(fā)團隊的編輯器組件:
1. Delta和API
Quill返回json結構的數(shù)據(jù),有API操作編輯器內(nèi)部元素。也可以通過innerHtml獲取dom。
2. 可定制
Quill可以修改、擴展現(xiàn)有的模塊,也可以添加新的模塊,甚至可以在parchment的基礎上全部重寫。有較強的靈活性。
3. 兼容性
當前版本兼容Chrome、IE11、Edge,已滿足業(yè)務需求。
4. 與其他編輯器比較
相比CKEditor、TinyMCE等傳統(tǒng)編輯器,有更好的API和定制功能。而Draft是基于React的編輯器,需要自己實現(xiàn)數(shù)據(jù)層的內(nèi)容,使用成本更高。國內(nèi)的wangEditor功能比較全面,但不具備擴展性。
1. 基礎文本模塊
分割線、格式刷、段落、撤回和重做
2. 多媒體模塊
圖片上傳模塊
3. 其他模塊
工具欄的Tooltip模塊
4. 預覽功能
圖片上傳主要取決于業(yè)務需求,我們可以改寫圖片的handler方法,打開一個模態(tài)框或者打開本地文件夾,調(diào)接口上傳圖片。通用點是保存的時候,用Delta保留前面的內(nèi)容并插入圖片內(nèi)容,最后更新Quill。
由于圖片上傳、預覽主要取決于業(yè)務需求,與編輯器關系不大,后面不再提到。
以上就是關于富文本編輯器在線相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀: