sy-editor 新氧富文本編輯器
sy-editor 1.0.0 第一版本,基于wangeditor 富文本編輯器。 突出輕量、簡(jiǎn)潔、易用。
功能簡(jiǎn)介
| 功能 | 工具欄圖標(biāo) | 使用注意 | menu配置 | 編輯器配置 | 標(biāo)簽 | 備注 |
|---|---|---|---|---|---|---|
| 撤銷、重復(fù) | ![]() |
緩存中會(huì)保存用戶操作的全部步驟,包括復(fù)制,粘貼,退格刪除,輸入等功能 | editor.config.menus=[ ...'undo','redo' ] | 無 | 無 | 如需取消此次步驟或恢復(fù)到某一段,點(diǎn)擊撤銷即可。 如撤銷過多,前進(jìn)即可恢復(fù)回來。 |
| 字體 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'fontfamily' ] | editor.config.familys = [...] //具體可查下方編輯器具體配置 | <font face="xxx"></font> |
可配置化的字體列表 刪除:編輯器配置中的對(duì)應(yīng)配置刪除不用的即可。新增:同刪除一樣,找尋到自己要新增的字體,添加到數(shù)組中即可。(ps:若配置的字體無效,則不會(huì)生效) |
| 字體大小 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'fontsize' ] | editor.config.fontsizes = { key: value } //具體可查下方編輯器具體配置 | <font size="xxx"></font> |
可配置化的字體列表. 刪除:編輯器配置中的對(duì)應(yīng)配置刪除不用的即可。新增:同刪除一樣,找尋到自己要新增的字體,添加到數(shù)組中即可。 |
| 標(biāo)題 | ![]() |
標(biāo)題為單獨(dú)標(biāo)簽,可直接點(diǎn)擊輸入內(nèi)容,或選中內(nèi)容點(diǎn)擊渲染標(biāo)題。 | editor.config.menus=[ ...'head' ] | 統(tǒng)一的內(nèi)容,無序單獨(dú)配置 | <h1> ... <h6> |
編輯器內(nèi)可直接添加標(biāo)題,標(biāo)題默認(rèn)(字體變大,文字加粗) |
| 字體顏色 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ... ‘forecolor’ ] | editor.config.colors={ ' #000' : '黑色' } | <font color="xxx"></font> |
可配置化的字體顏色列表. 刪除:編輯器配置中的對(duì)應(yīng)配置刪除不用的即可。新增:同刪除一樣,找尋到自己要新增的顏色,添加到數(shù)組中即可。 |
| 背景色 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'bgcolor' ] | editor.config.colors = { key: value } | 無 | 與字體顏色公用同一列表。 |
| 行高 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'lineheight' ] | editor.config.lineheight = { key: value} 具體配置可見下方 | 無 | 可配置化的行高列表. 刪除:編輯器配置中的對(duì)應(yīng)配置刪除不用的即可。新增:同刪除一樣,找尋到自己要新增的行高,添加到數(shù)組中即可。 |
| 字體加粗 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'bold' ] | 無 | <b></b> |
無 |
| 字體傾斜 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'italic' ] | 無 | <i></i> |
無 |
| 下劃線 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'underline' ] | 無 | <u></u> |
無 |
| 刪除線 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'strikethrough' ] | 無 | <strike></strike> |
無 |
| 無序、有序列表 | ![]() |
列表排序,分為無序和有序列表。 | editor.config.menus=[ ...'unorderlist',‘ orderlist’ ] | 無 |
<ul> <li><li></ul> <ol><li></li></ol>
|
無序列表(unorderlist) : 是ul ,li 標(biāo)簽的列表集合 。 有序列表(orderlist): 是ol,li 的列表集合。 |
| 左對(duì)齊、居中、右對(duì)齊 | ![]() |
P、h1、h2、li等標(biāo)簽的style屬性。 text-align: left/right/center; | editor.config.menus=[ ... 'alignleft','aligncenter','alignright' ] | 無 | 無 | 默認(rèn)是左對(duì)齊,選擇居中對(duì)齊,和右對(duì)齊,光標(biāo)會(huì)跳至對(duì)應(yīng)的地方。 |
| 縮進(jìn) | ![]() |
無 | editor.config.menus=[ ...'indent' ] | 無 | 無 | 會(huì)將頁面上所選的格式,全都清理完畢,恢復(fù)初始化 |
| 清除格式 | ![]() |
為了確保統(tǒng)一管理,需用戶選中文字,進(jìn)行點(diǎn)擊才能使用,若是空白處點(diǎn)擊,不會(huì)觸發(fā)。 | editor.config.menus=[ ...'eraser' ] | 無 | <strike></strike> |
無 |
| 全屏 | ![]() |
無 | editor.config.menus=[ ...'fullscreen' ] | 無 | 無 | 輔助功能,全屏能更好的使用編輯器 |
| 增加鏈接、刪除鏈接 | ![]() |
點(diǎn)擊鏈接會(huì)出現(xiàn)跳轉(zhuǎn)的toolbar工具欄。 | editor.config.menus=[ ...‘link' ,'unlink' ] | 無 | <a href="" target=""></a> | 增加超鏈接、取消超鏈接 |
| 表格 | ![]() |
點(diǎn)擊表格會(huì)出現(xiàn) 刪除/放大/縮小的工具欄。 | editor.config.menus=[ ...‘table' ] | 無 | <table> <tr> <td></td> </tr></table> |
表格功能 |
| 表情 | ![]() |
表情功能,目前默認(rèn)是接口形式獲取默認(rèn)展示emoji表情 | editor.config.menus=[ ...‘ emotion' ] | 無 |
<img /> <span />
|
emoji表情的兼容性很差,因此在一期沒有emoji表情映射的圖片下,會(huì)進(jìn)行emoji表情的兼容性判斷,如果用戶兼容性差的話,則隱藏emoji表情列表。 |
| 圖片 | ![]() |
提供圖片的插入 上傳功能 | editor.config.menus=[ ...‘ img' ] | 無 | <img src="" width="" height="" watermark="" > |
點(diǎn)擊圖片會(huì)出現(xiàn)添加水印,替換圖片的工具欄。 watermark 自定義屬性,判定是否添加水印 |
| 視頻 | ![]() |
點(diǎn)擊表格會(huì)出現(xiàn) 刪除/放大/縮小的工具欄。 | editor.config.menus=[ ...‘video' ] | 無 | <video src= "" poster="" controls > |
視頻功能 |
| word文檔上傳 | ![]() |
提供word文檔上傳分析回塞入編輯器功能。 | editor.config.menus=[ ...‘word' ] | 無 | 無 | 無 |
| 百度地圖 | ![]() |
提供百度地圖的插入功能 | editor.config.menus=[ ...‘ location' ] | 無 | <img /> |
無 |
| 特殊字符 | ![]() |
提供特殊字符列表。 | editor.config.menus=[ ...‘ symbol' ] | 無 | 無 | 無 |
| 引用 | ![]() |
提供引用功能。 | editor.config.menus=[ ...‘ quote' ] | 無 | <blockquote /> |
無 |
| 插入代碼 | ![]() |
提供插入代碼功能及代碼高亮功能。 | editor.config.menus=[ ...‘ insertcode' ] | 無 |
<pre > <code>
|
無 |
| 插入分隔符 | ![]() |
提供分隔符功能。 | editor.config.menus=[ ...‘ hrcode' ] | 無 | <hr /> |
無 |
編輯器字段說明
var editor = new wangEditor('編輯器id名');
此時(shí)實(shí)例化出來的editor 中會(huì)有一個(gè)config 的配置對(duì)象,我們的編輯器配置就是在 editor.config中進(jìn)行
editor.config
- zindex
- 默認(rèn)值:
10000 - 描述: 全屏?xí)r的 z-index
- 值類型:
number
- 默認(rèn)值:
- printLog
- 默認(rèn)值:
true - 描述: 是否打印log(開發(fā)階段使用)
- 值類型:
boolean (true 打印) (false 不打?。?/code>
- 默認(rèn)值:
- menuFixed
- 默認(rèn)值:
false - 描述: 菜單吸頂
- 值類型:
( number 吸頂,值為top值) (false 不吸頂)
- 默認(rèn)值:
- jsFilter
- 默認(rèn)值:
true - 描述: 編輯源碼時(shí),過濾 javascript
- 值類型:
boolean ( true 過濾) (false 不過濾)
- 默認(rèn)值:
- legalTags
- 默認(rèn)值:'p,h1,h2,h3,h4,h5,h6,blockquote,table,ul,ol,pre'
- 描述: 編輯器允許的標(biāo)簽
- 值類型:
string 標(biāo)簽名
- lang
- 默認(rèn)值:
editor.langs['zh-cn'](中文) - 描述: 語言包
- 值類型:
editor.langs['zh-cn'] | editor.langs['en'] (目前只支持中英文)
- 默認(rèn)值:
- emotionsShow
- 默認(rèn)值:
'icon' - 描述: 表情包插入到編輯器內(nèi)的值
- 值類型:
string (icon, 插入表情) (value ,插入值 例如:&040 )
- 默認(rèn)值:
- pasteFilter
- 默認(rèn)值:
true - 描述: 是否過濾粘貼內(nèi)容
- 值類型:
boolean (true 過濾) (false 不過濾)
- 默認(rèn)值:
- pasteText
- 默認(rèn)值:
false - 描述: 是否粘貼純文本
- 值類型:
boolean editor.config.pasteFilter === false 時(shí)候,此配置將失效
- 默認(rèn)值:
- parseImg
- 默認(rèn)值:
true - 描述: 是否可以粘貼圖片 (新氧樓層,回復(fù)等功能禁止粘貼圖片,特殊配置)
- 值類型:
boolean (false 不能粘貼除表情外的圖片 ) (true 可以粘貼)
- 默認(rèn)值:
- parseLink
- 默認(rèn)值:
true - 描述: 是否可以粘貼超鏈接(默認(rèn)不需要配置)
- 值類型:
boolean (false 不可以粘貼 ) (true 若parseFilterRule中未過濾a標(biāo)簽,則可粘貼超鏈接)
- 默認(rèn)值:
- codeDefaultLang
- 默認(rèn)值:
javascript - 描述: 插入代碼時(shí),默認(rèn)的語言
- 值類型:
string 根據(jù)hljs 中語言列表配置
- 默認(rèn)值:
- forbidEnter
- 默認(rèn)值:
false - 描述: 是否禁止換行
- 值類型:
boolean (true 禁止換行) (false 可以換行)
- 默認(rèn)值:
- editor_type
- 默認(rèn)值:
'pc' - 描述: 替換默認(rèn)的上傳圖片配置
- 值類型: 此處無需更改,若更改為其他字段,可能會(huì)出現(xiàn)意外情況。
- 默認(rèn)值:
- uploadImgUrl
- 默認(rèn)值:
true - 描述: 上傳圖片的配置
- 值類型:
boolean (true 允許上傳) (false 禁止上傳)
- 默認(rèn)值:
- menus
- 默認(rèn)值:
[ 'source','|', 'bold', 'underline','italic','strikethrough', 'eraser','forecolor','bgcolor','|','quote','fontfamily','fontsize','head','unorderlist','orderlist','alignleft', 'aligncenter', 'alignright','|','link','unlink','table','emotion','|','img','video','location','insertcode','|','undo','redo', 'word' 'fullscreen' ]; - 描述:此字段控制菜單的顯示隱藏,以及分組和排序。 通過 '|' 進(jìn)行菜單的歸類和分組, 通過索引來判斷顯示順序。
- 值類型:
Array
- 默認(rèn)值:
- colors
- 默認(rèn)值:
{ // 'value': 'title' '#880000': '暗紅色', '#800080': '紫色', '#ff0000': '紅色', '#ff00ff': '鮮粉色', '#000080': '深藍(lán)色', '#0000ff': '藍(lán)色', '#00ffff': '湖藍(lán)色', '#008080': '藍(lán)綠色', '#008000': '綠色', '#808000': '橄欖色', '#00ff00': '淺綠色', '#ffcc00': '橙黃色', '#808080': '灰色', '#c0c0c0': '銀色', '#000000': '黑色', '#ffffff': '白色' }; - 描述: 文字顏色和文字背景色的控制。
- 值類型:
Object (key:value 形式來添加刪除)
- 默認(rèn)值:
- lineheight
- 默認(rèn)值:
{ // 格式: 'value' : 'title' '1.0': '1.0倍', '1.5': '1.5倍', '1.8': '1.8倍', '2.0': '2.0倍', '2.5': '2.5倍', '3.0': '3.0倍' }; - 描述: 文字行高的配置
- 值類型:
Object (key:value 形式來添加刪除)
- 默認(rèn)值:
- fontsizes
- 默認(rèn)值:
{ // 格式:'value': 'title' 1: '12px', 2: '13px', 3: '16px', 4: '18px', 5: '24px', 6: '32px', 7: '48px' }; - 描述: 文字字號(hào)的配置
- 值類型:
Object (key:value 形式來添加刪除)
- 默認(rèn)值:
- familys
- 默認(rèn)值:
[ '宋體', '黑體', '楷體', '微軟雅黑', 'Arial', 'Verdana', 'Georgia', 'Times New Roman', 'Microsoft JhengHei', 'Trebuchet MS', 'Courier New', 'Impact', 'Comic Sans MS', 'Consolas' ]; - 描述: 字體
- 值類型:
Array
- 默認(rèn)值:
- emotions
- 默認(rèn)值:{ 'default': { title: 'emoji', data: '/editor/emoji' }, 'qqemotion': { title: 'QQ表情', data: '/editor/emotion' } }- 描述: 表情字段, title 是表情的tab欄, data 是表情的列表
- 值類型:
object data有兩種格式(1. Array [{icon: xxx, value: xxx }] 2. string url 編輯器會(huì)根據(jù)url去請(qǐng)求數(shù)據(jù),塞回頁面)
-
parseFilterRule(目前禁用)默認(rèn)值:{ p: ['style'],img: ['src','width','height','watermark','style'] ,video: [] }描述: 粘貼過濾的規(guī)則全字段:{h1: [ ], //和標(biāo)題關(guān)聯(lián) h2: [ ], //和標(biāo)題關(guān)聯(lián)h3: [ ], 和標(biāo)題關(guān)聯(lián)h4: [ ], 和標(biāo)題關(guān)聯(lián)h5: [ ], 和標(biāo)題關(guān)聯(lián) h6: [ ], 和標(biāo)題關(guān)聯(lián) ol: [ ], 和有序列表關(guān)聯(lián) ul: [ ], 和無序列表關(guān)聯(lián) li: [ ], 和有序、無序列表關(guān)聯(lián) u: [ ], 和下劃線有關(guān) ins: [ ], 和下劃線有關(guān) i: [ ], 和斜體字有關(guān) em: [ ], 和斜體字有關(guān) b: [ ], 和字體加粗有關(guān) strong: [ ], 和字體加粗有關(guān) strike: [ ], 和字體刪除線有關(guān) s: [ ], 和字體刪除線有關(guān) del: [ ], 和字體刪除線有關(guān) a: ['href', 'target'], 和超鏈接有關(guān) font: ['face','size','color','style'], 和字體 類型|大小|顏色|背景色 等有關(guān) blockquote: [ ], 和工具欄引用有關(guān) pre: ['style'], 和工具欄插入代碼有關(guān) code: ['class', 'codemark'], 和工具欄插入代碼有關(guān) hr: [ ] 和工具欄分割線有關(guān) };配置規(guī)則: 此項(xiàng)配置關(guān)聯(lián) 工具欄 (menus)例如:工具欄中有標(biāo)題(head). 那么剪切板中的html 中若有標(biāo)題相關(guān)的<h1 | h2 | h3 | ...>標(biāo)簽,則需要配置此處,不然將會(huì)被過濾,影響使用。影響范圍 : 1.復(fù)制粘貼內(nèi)容 2.導(dǎo)入word 文檔值類型:object
- sys
- 默認(rèn)值:
0 - 描述: 請(qǐng)求參數(shù)中攜帶 ,用來判斷站點(diǎn)
- 值類型:
number 0是www站點(diǎn) 1 是 admin站點(diǎn)
- 默認(rèn)值:
- sysType
- 默認(rèn)值:
1 - 描述: 請(qǐng)求參數(shù)中攜帶 ,是用來判斷發(fā)帖,日記
- 值類型:
number 1是發(fā)帖 2是 日記
- 默認(rèn)值:
- compelWaterMark
- 默認(rèn)值:
0 - 描述: 是否強(qiáng)制添加,或不能添加水印
- 值類型:
number 0 可選 1強(qiáng)制添加 2 強(qiáng)制不添加
- 默認(rèn)值:
圖片相關(guān)
圖片來源
- 通過工具欄圖片按鈕上傳圖片。
- 需在配置項(xiàng) editor.config.menus 中加入 'img' 開啟圖片工具欄按鈕
- 需在配置項(xiàng) editor.config.uploadImgUrl 中查看是否值為false (若無配置過可忽略,因?yàn)槟J(rèn)是true)
- 圖片單次可最多上傳9張
- 圖片單次可最多插入到編輯器9張
- 圖片支持選擇是否添加水印上傳(默認(rèn)添加水印)
- 素材庫(kù)中會(huì)有近期上傳過的圖片記錄,可選擇直接插入
- 表情圖片
- 需在配置項(xiàng) editor.config.menus 中加入 'emotion' 開啟表情工具欄按鈕
- 默認(rèn)表情為 文字版本的emoji 以及圖片版本的QQ表情。 如需修改,可查看上面的配置項(xiàng)相關(guān)內(nèi)容
- 表情圖片都是在
static.soyoung.com/images/newface或者
static.soyoung.com/pc/static/fe_pc/libs/editor/plugins/emoticons/images下,暫不支持其他路徑的表情。 - 圖片表情的寬高為 18px
- 直接拖拽上傳圖片
- 直接拖拽上傳圖片,會(huì)先調(diào)用接口上傳。
- 拖拽入編輯器的圖片,若顯示出來,則均已上傳至服務(wù)器
- 拖拽入編輯器的圖片, 在素材庫(kù)中會(huì)有記錄
- 拖拽上傳支持多張一起拖拽
- 拖拽上傳會(huì)直接給圖片添加水印
- word 文檔直接復(fù)制,粘貼入編輯器的圖片
- 目前暫不支持此種方式
- 違反了data-src 的協(xié)議,無法直接讀取用戶的磁盤對(duì)應(yīng)路徑的圖片
- 會(huì)在原有圖片的位置,替換為上傳失敗的圖片,以便用戶在對(duì)應(yīng)地方替換圖片。
- 網(wǎng)絡(luò)base64 格式圖片
- 網(wǎng)絡(luò)格式base64圖片,不存在防盜鏈的問題
- 網(wǎng)絡(luò)圖片base64的 圖片會(huì)先展示在文本編輯器中,再上傳至服務(wù)器,返回結(jié)果再次替換src路徑。
- 網(wǎng)絡(luò)base64圖片,會(huì)直接加入水印。
- 網(wǎng)絡(luò)鏈接圖片
- 檢查是否有防盜鏈的問題
- 若無防盜鏈,編輯器會(huì)自動(dòng)轉(zhuǎn)化為base64格式的圖片,之后步驟與網(wǎng)絡(luò)base64圖片一致
- 若有防盜鏈, 編輯器會(huì)將網(wǎng)絡(luò)圖片替換為上傳失敗的圖片,用以提醒用戶
- 網(wǎng)絡(luò)圖文混雜
- 循環(huán)圖片執(zhí)行網(wǎng)絡(luò)base64 以及網(wǎng)絡(luò)連接圖片 。步驟與5.6一致。
- 新氧域名下的圖片
- 直接添加入編輯器中,不做過濾。
圖片配置
- watermark 是否有水印
- 0 無水印
- 1 有水印
- 點(diǎn)擊圖片toolbar
- 若圖片本身已有水印, 則工具欄會(huì)出現(xiàn)(替換圖片的功能)
- 若圖片本身無水印,則工具欄會(huì)出現(xiàn)(添加水印、替換圖片的功能)
- 圖片大小拉伸(暫不放開,若有需求,可聯(lián)系)
- 上傳圖片參數(shù)
- editor.config.uploadImgUrl 檢查是否支持上傳圖片,若配置為false ,則不再進(jìn)行圖片上傳 功能
- editor.config.sys 檢查圖片上傳參數(shù), 默認(rèn)值為0(www站點(diǎn))若admin站點(diǎn),需改為1
- editor.config.sysType 檢查圖片上傳參數(shù)。 默認(rèn)值為1(發(fā)帖) 。 若為日記 ,需改為2
視頻相關(guān)
視頻來源
- 通過工具欄視頻按鈕上傳視頻。
- 需在配置項(xiàng) editor.config.menus 中加入 'video' 開啟圖片工具欄按鈕
- 一篇文章只能插入一段時(shí)間
- 視頻默認(rèn)取第一幀作為封面
- 視頻有素材庫(kù),會(huì)將近期上傳的視頻進(jìn)行記錄
- 視頻的寬高均為視頻本身的寬高,未做任何處理
Vue使用說明:
需先切換至新氧私有NPM源
$ npm install sy-editor --save
自定義組件,例子如下:
<template>
<div :ref="editorId"></div>
</template>
<script>
import syEditor from "sy-editor";
export default {
props: {
config: Object,
editorId: {
default: 'syEditor'
},
width: {
default: null
},
height: {
default: 300
}
},
data() {
return {
editor: ""
};
},
mounted() {
const _el = this.$refs[this.editorId];
if (this.width) {
_el.style.width = `${this.width}px`
}
_el.style.height = `${this.height}px`
// 實(shí)例化syeditor
const editor = new syEditor(_el);
// 配置化
// const { entries } = Object;
// for (let [key, value] of entries(this.config)) {
// editor.config[key] = value;
// }
editor.config = Object.assign(editor.config,this.config)
editor.onchange = this.handlerChange;
// 創(chuàng)建
editor.create();
this.editor = editor;
},
methods: {
handlerChange() {
this.$emit("handlerChange", this.editor.$txt.text());
}
}
};
</script>
<style scoped>
</style>
使用:
<template>
<div id="app">
<Editor @handlerChange="handlerChange" :config="config"/>
</div>
</template>
<script>
import Editor from './components/Editor'
export default {
name: 'App',
components: {
Editor
},
data(){
return {
config: {
// ... 具體配置化
}
}
},
methods:{
handlerChange(text){
}
}
}
</script>
config具體配置信息請(qǐng)查看本文中(編輯器字段說明)


























