99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Vue3中用Canvas渲染富文本:告別contenteditable的完整實(shí)戰(zhàn)指南

Vue3中用Canvas渲染富文本:告別contenteditable的完整實(shí)戰(zhàn)指南 簡介Canvas-editor是一款基于TypeScript編寫的高靈活性編輯器其Vue3可運(yùn)行源碼包面向需要將此類編輯器集成到業(yè)務(wù)系統(tǒng)中的前端開發(fā)者尤其適合官方文檔不夠直觀時希望通過源碼學(xué)習(xí)和二次定制的場景。壓縮包為zip格式共十一個文件整體僅24KB體積十分輕量。其中兩個Vue文件是編輯器核心封裝組件兩個JS文件承擔(dān)入口與邏輯裝配三個HTML文件可在瀏覽器中直接打開用于演示效果兩個JSON文件管理依賴和構(gòu)建配置另附.gitignore與.inscode輔助文件目錄結(jié)構(gòu)清晰便于按需核驗(yàn)初始化參數(shù)、組件注冊和依賴安裝方式。資源內(nèi)還重點(diǎn)梳理了集成過程中的關(guān)鍵環(huán)節(jié)如何復(fù)制核心組件、完成配置項(xiàng)初始化并總結(jié)了常見適配問題、只讀模式控制以及新增功能的實(shí)現(xiàn)思路可作為排錯與二次開發(fā)的參考。作者也分享了實(shí)際項(xiàng)目中的修改和定制方案幫助讀者依據(jù)自身需求快速調(diào)整。已有221人學(xué)習(xí)下載適合希望掌握Canvas-editor在Vue3中集成細(xì)節(jié)并希望靈活擴(kuò)展編輯器能力的前端工程師。1. Vue3項(xiàng)目里的Canvas渲染富文本為什么你不用再糾結(jié)contenteditable做Web富文本編輯器絕大多數(shù)團(tuán)隊(duì)第一反應(yīng)是套一個基于contenteditable的庫。但凡是做過三年以上前端的人基本都遇到過這類編輯器帶來的光標(biāo)錯亂、粘貼樣式污染、移動端鍵盤頂起頁面等一系列問題。某公司內(nèi)部有個知識庫項(xiàng)目最早用的是原生contenteditable方案線上問題工單里三分之一是編輯體驗(yàn)相關(guān)的后來整體重構(gòu)換成Canvas渲染內(nèi)核的編輯器問題數(shù)量降了一個量級。這份資源就是我在Vue3項(xiàng)目里把Canvas-editor跑通的完整可運(yùn)行源碼包含從npm包安裝、編輯器初始化、工具欄插件裝載到表單集成的每一步代碼附帶我們實(shí)際開發(fā)中踩過的幾個關(guān)鍵坑。它適合正在選型富文本編輯器、或者被傳統(tǒng)contenteditable編輯器折騰到想換方案的開發(fā)者也適合想理解Canvas渲染編輯器工作原理的初學(xué)者。2. 安裝與初始化從npm包到頁面第一個編輯器實(shí)例2.1 依賴拆分運(yùn)行時、插件、Vue封裝分別裝什么Canvas-editor是一個不依賴框架的編輯器內(nèi)核它本身用Canvas渲染頁面內(nèi)容所以不像傳統(tǒng)編輯器那樣操作DOM節(jié)點(diǎn)。項(xiàng)目里裝包的時候很多人只裝了編輯器本體結(jié)果一跑就報錯找不到工具欄、找不到插件入口這是因?yàn)檫@個體系是拆分成多個npm包配合使用的。我一般會在項(xiàng)目里安裝以下幾類依賴npm install canvas-editor/editor canvas-editor/plugin-link canvas-editor/plugin-image canvas-editor/plugin-highlight canvas-editor/plugin-table canvas-editor/plugin-markdown每個包的角色是不同的。canvas-editor/editor是核心運(yùn)行庫里面包含編輯器類、命令系統(tǒng)、渲染引擎和默認(rèn)樣式解析器。剩下的plugin-*系列是官方維護(hù)的擴(kuò)展插件分別負(fù)責(zé)鏈接編輯、圖片插入、代碼高亮、表格渲染和Markdown快捷輸入。注意這里插件不是一個統(tǒng)一注冊的而是按需引入后分門別類地傳給編輯器實(shí)例這一點(diǎn)和很多人的初印象不一樣以為裝一個包就全有了。有人問為什么不把插件全塞進(jìn)主包里。從拆包邏輯看核心庫只負(fù)責(zé)渲染和選區(qū)像是圖片上傳、鏈接彈窗這種依賴HTTP請求或后端接口的功能如果打進(jìn)核心包會導(dǎo)致編輯器無法在純本地環(huán)境運(yùn)行。拆開后你可以只裝核心包來跑一個不帶任何外部依賴的最小編輯器也可以按業(yè)務(wù)需要組合插件。2.2 初始化代碼Vue3組件里掛載CanvasEditor的完整代碼安裝完之后初始化代碼是我在組件里經(jīng)常反復(fù)寫的一套模板。核心思路是編輯器需要一個掛載點(diǎn)DOM元素然后實(shí)例化編輯器把工具欄需要用的插件傳給編輯器。下面是最簡單的可運(yùn)行版本。template div classeditor-container div classtoolbar-wrap reftoolbarRef/div div classeditor-wrap refeditorRef/div /div /template script setup langts import { ref, onMounted, onBeforeUnmount } from vue import Editor from canvas-editor/editor import LinkPlugin from canvas-editor/plugin-link import ImagePlugin from canvas-editor/plugin-image import HighlightPlugin from canvas-editor/plugin-highlight const toolbarRef refHTMLDivElement() const editorRef refHTMLDivElement() let instance: Editor | null null onMounted(() { instance new Editor({ target: editorRef.value, toolbar: [[bold, italic, underline], [insertImage, insertLink]], onChange: () { // 內(nèi)容變化回調(diào) } }) LinkPlugin.init(instance) ImagePlugin.init(instance) HighlightPlugin.init(instance) instance.toolbar.render(toolbarRef.value) }) /script這段代碼有幾個地方容易出錯。首先是onMounted里才實(shí)例化因?yàn)榇藭rDOM節(jié)點(diǎn)才真正渲染完畢。其次是toolbar是一個二維數(shù)組每個內(nèi)層數(shù)組對應(yīng)工具欄里的一行不是一維數(shù)組寫錯的話工具欄按鈕會全部擠在同一行或者渲染異常。toolbar.render接收的DOM元素是工具欄的掛載容器這個容器和編輯器內(nèi)容區(qū)是兩個不同的div混用的話編輯器會直接渲染失敗。插件初始化必須在編輯器實(shí)例創(chuàng)建之后執(zhí)行因?yàn)槊總€插件的init方法內(nèi)部會向編輯器實(shí)例注冊工具欄按鈕的命令處理器。順序反過來會報錯提示找不到編輯器實(shí)例。2.3 生命周期與destroy離開頁面不釋放會出什么樣的問題這個編輯器實(shí)例持有大量Canvas上下文和事件監(jiān)聽在Vue3組件卸載時不主動銷毀問題會在切路由后爆發(fā)。最常見表現(xiàn)是控制臺拋錯說Canvas上下文已丟失、內(nèi)存持續(xù)上漲、再次進(jìn)入頁面時編輯器黑屏。我習(xí)慣在組件卸載前顯式調(diào)用銷毀方法onBeforeUnmount(() { if (instance) { instance.destroy() instance null } })這里要特別強(qiáng)調(diào)的是destroy()會清理編輯器內(nèi)部的事件監(jiān)聽和Canvas實(shí)例但不會自動清理你在外部通過instance.on之類接口注冊的額外監(jiān)聽事件。如果你給編輯器注冊過自定義事件必須在destroy之前先移除否則回調(diào)仍然會被觸發(fā)并持有組件引用出現(xiàn)典型的閉包內(nèi)存泄漏。還有一個細(xì)節(jié)destroy()執(zhí)行完之后編輯器容器里殘留的Canvas節(jié)點(diǎn)不會被自動清空。一般做法是直接在onBeforeUnmount里把對應(yīng)的DOM節(jié)點(diǎn)的innerHTML也清一遍。toolbarRef.value (toolbarRef.value.innerHTML ) editorRef.value (editorRef.value.innerHTML )這一步經(jīng)常被忽略但它對防止頁面切回時出現(xiàn)空白編輯器的作用非常明顯。真實(shí)項(xiàng)目中我把這套初始化邏輯封裝成了一個Vue3組件配置項(xiàng)通過props傳入組合式API返回編輯器和工具欄實(shí)例業(yè)務(wù)側(cè)再也不用關(guān)心生命周期問題。3. 核心接口調(diào)用值讀寫、歷史記錄與光標(biāo)操作3.1 setValue與getHTML雙向同步的時機(jī)與坑表單場景里最核心的一組接口就是寫入值和讀取值。Canvas-editor里寫入內(nèi)容用setValue讀取內(nèi)容用getHTML。但它們的接口簽名和DOM編輯器差異不小尤其是傳入格式。// 讀取編輯器內(nèi)HTML const editorHTML instance.getHTML() // 寫入HTML內(nèi)容到編輯器 instance.setValue(editorHTML)getHTML返回的是編輯器的序列化HTML字符串和傳統(tǒng)編輯器返回的HTML結(jié)構(gòu)有區(qū)別。Canvas-editor的HTML結(jié)構(gòu)是專門為Canvas渲染設(shè)計(jì)的一套標(biāo)簽體系標(biāo)簽里帶>const rawHTML response.data.content const editorHTML normalizeEditorHTML(rawHTML) instance.setValue(editorHTML)normalizeEditorHTML是我在公共函數(shù)庫里寫的一個清洗函數(shù)內(nèi)部做法是把純文本段落自動包裹成編輯器能識別的p節(jié)點(diǎn)、把裸圖片鏈接轉(zhuǎn)成編輯器圖片節(jié)點(diǎn)結(jié)構(gòu)、過濾掉編輯器不支持的自定義標(biāo)簽。這個函數(shù)能解決大概80%的內(nèi)容混亂問題剩下的20%需要在數(shù)據(jù)源頭控制在編輯器側(cè)生成的內(nèi)容。3.2 execCommand與命令隊(duì)列工具欄按鈕背后的實(shí)現(xiàn)邏輯執(zhí)行加粗、斜體、插入鏈接這類操作核心走的是execCommand接口。這個接口的簽名是execCommand(commandId, value?)第一個參數(shù)是命令名第二個參數(shù)是命令需要的附加數(shù)據(jù)。// 加粗選中文本 instance.execCommand(bold) // 給選中文本插入鏈接 instance.execCommand(insertLink, { href: https://example.com, text: 點(diǎn)擊訪問 }) // 插入圖片 instance.execCommand(insertImage, { src: imageUrl, width: 200, height: 150 })代碼里能看到不同命令對value參數(shù)的要求不一樣。bold這種格式化命令不需要附加數(shù)據(jù)insertLink和insertImage需要傳對象結(jié)構(gòu)字段名要和插件內(nèi)部約定一致。如果傳錯字段名比如把href寫成url編輯器不報錯但鏈接的地址是空的這類錯誤在開發(fā)階段非常隱蔽。關(guān)于命令隊(duì)列這里有一個值得了解的點(diǎn)Canvas-editor內(nèi)部有歷史記錄棧execCommand大部分命令會自動壓入歷史棧以便撤銷重做。但像insertImage這種會觸發(fā)異步上傳圖片的命令歷史棧的記錄是在圖片上傳完成之后才壓入的。在圖片上傳期間執(zhí)行撤銷操作你會發(fā)現(xiàn)撤銷的不是圖片插入而是之前某個格式化操作。這個行為不是bug而是命令系統(tǒng)的隊(duì)列機(jī)制導(dǎo)致的。理解了這一點(diǎn)做圖片上傳時就該在異步回調(diào)里提示用戶正在上傳請稍后操作而不是讓用戶覺得撤銷失效。3.3 監(jiān)聽contentChange什么時候觸發(fā)、為什么比DOM事件慢編輯器內(nèi)容變化的回調(diào)官方叫onChange或通過on()接口監(jiān)聽contentChange事件。初用者很容易踩一個時間差坑輸入文字后立即讀取getHTML()拿到的內(nèi)容可能還是上一次的舊值。這個現(xiàn)象的根本原因是Canvas渲染編輯器的內(nèi)容變更檢測機(jī)制。DOM編輯器在每次輸入后DOM立刻變化同步讀取沒問題。但Canvas-editor需要先把輸入事件接收到、同步到內(nèi)部模型、再走一遍Canvas重繪流程最后才觸發(fā)contentChange事件。這個流程是異步的觸發(fā)時機(jī)在重繪完成之后。我一般會在設(shè)置onChange回調(diào)時做一個約定所有業(yè)務(wù)側(cè)對編輯器內(nèi)容的使用都必須放在這個回調(diào)里讀值不在外部用定時器或事件同步讀。instance.on(contentChange, () { const content instance.getHTML() emit(update:modelValue, content) })另一個細(xì)節(jié)是contentChange不是每個鍵都觸發(fā)的。比如直接調(diào)用setValue寫入一份相同內(nèi)容編輯器對比后判定沒變化事件不會觸發(fā)。光標(biāo)位置移動、選區(qū)變化這類操作也不會觸發(fā)內(nèi)容變更事件但會觸發(fā)rangeChange事件。這兩個事件分工不同不要把它們混在一起用。如果你需要監(jiān)聽編輯器內(nèi)容之外的其他狀態(tài)比如選區(qū)變化去控制工具欄按鈕的禁用態(tài)用rangeChange事件會更合適instance.on(rangeChange, (range) { // 根據(jù)選區(qū)更新工具欄按鈕狀態(tài) const hasSelection !range.isCollapsed updateToolbarState(hasSelection) })rangeChange的觸發(fā)頻率比contentChange高得多鼠標(biāo)拖選、鍵盤方向鍵移動都會觸發(fā)。在里面放重邏輯會導(dǎo)致頁面掉幀一般只做輕量狀態(tài)更新。4. 插件機(jī)制與樣式定制把編輯器做成產(chǎn)品形態(tài)4.1 官方插件鏈link、image、highlight等插件的裝載順序插件系統(tǒng)的裝載順序?qū)τ诘谝淮斡玫娜硕允莻€玄學(xué)問題。我一開始也是憑直覺裝結(jié)果遇到工具欄按鈕渲染了但點(diǎn)擊沒反應(yīng)、或者插件彈窗能開但確定按鈕執(zhí)行失敗這類問題。后來逐步排查才搞明白插件裝載順序有它的內(nèi)在邏輯。先看一段典型的插件裝載代碼import Editor from canvas-editor/editor import LinkPlugin from canvas-editor/plugin-link import ImagePlugin from canvas-editor/plugin-image import TablePlugin from canvas-editor/plugin-table import HighlightPlugin from canvas-editor/plugin-highlight let editorInstance new Editor({ target: editorContainer }) // 先裝載基礎(chǔ)能力 LinkPlugin.init(editorInstance) ImagePlugin.init(editorInstance) // 再裝載表格與高亮 TablePlugin.init(editorInstance) HighlightPlugin.init(editorInstance)推薦順序是鏈接、圖片這類基礎(chǔ)塊級元素插件先裝表格、高亮這類復(fù)合能力后裝。原因是表格插件內(nèi)部會使用鏈接和圖片的節(jié)點(diǎn)解析能力在初始化時它可能會注冊自己的命令依賴基礎(chǔ)插件的服務(wù)接口。雖然這個依賴關(guān)系不是強(qiáng)制的即反著裝也不會直接報錯但反著裝遇到復(fù)雜混合內(nèi)容時表格里的圖片可能會渲染成裸露的HTML文本。關(guān)于高亮插件它依賴一個獨(dú)立的代碼解析庫。裝載高亮插件之前需要確保項(xiàng)目中已經(jīng)安裝了它依賴的語言包和樣式包否則代碼塊渲染出來是純文本沒有任何顏色。這個依賴關(guān)系在官方文檔里寫得很淺很多人在這一步浪費(fèi)時間排查。插件本身還支持自定義配置。拿鏈接插件舉例LinkPlugin.init(editorInstance, { onConfirm: (link) { console.log(link url:, link.href) return true } })配置項(xiàng)里可以傳入回調(diào)函數(shù)在用戶點(diǎn)擊確定插入鏈接時攔截處理。這里返回true表示允許編輯器執(zhí)行后續(xù)插入邏輯返回false則取消插入。這個機(jī)制可以用來做鏈接白名單校驗(yàn)、跳轉(zhuǎn)前權(quán)限判斷等業(yè)務(wù)邏輯不把安全性完全交給編輯器內(nèi)核。4.2 定制工具欄按需取舍功能按鈕的配置方式Canvas-editor的工具欄不是固定一排按鈕讓你選顯隱而是通過數(shù)組配置決定渲染哪些按鈕以及按鈕的排列組合方式。這個設(shè)計(jì)靈活度很高但初期的學(xué)習(xí)成本也不低。工具欄配置結(jié)構(gòu)如下const toolbarConfig [ [undo, redo], [bold, italic, underline, strikeThrough], [fontSize, fontFamily, color, highlight], [insertImage, insertLink, insertTable], [left, center, right] ]每個內(nèi)層數(shù)組是一行工具欄數(shù)組內(nèi)的每個元素是一個按鈕的命令I(lǐng)D。這里注意幾個容易踩的點(diǎn)其一命令I(lǐng)D字符串必須和編輯器內(nèi)部注冊的命令保持一致寫錯一個字母工具欄整行渲染會中斷。比strikeThrough的大小寫寫錯成strikethrough會靜默失敗按鈕不出現(xiàn)。其二工具欄按鈕的順序和最終展示順序一致但格式按鈕和塊級操作按鈕混排時需要手動加分割線。配置里沒有直接的分隔線選項(xiàng)可以通過插入一個特殊字符串實(shí)現(xiàn)const toolbarConfig [ [undo, redo, |, bold, italic] ]|會被渲染為工具欄分隔線但它不是編輯器命令純UI標(biāo)記。這個技巧很容易在查閱源碼時發(fā)現(xiàn)官方文檔一般不細(xì)講。其三有些命令依賴插件已裝載。比如把insertImage放進(jìn)工具欄配置但前面沒有執(zhí)行ImagePlugin.init按鈕照樣渲染出來不過點(diǎn)擊沒有任何反應(yīng)控制臺也不會報錯。這個問題在調(diào)試時非常誤事我排查過一次最后發(fā)現(xiàn)是插件裝載被注釋掉了。4.3 樣式隔離Canvas編輯器覆蓋主題色的正確姿勢Canvas編輯器的樣式系統(tǒng)和普通DOM組件完全不同。工具欄、彈窗這類外圍UI走的是普通CSS但編輯器內(nèi)容區(qū)內(nèi)部所有渲染都在Canvas畫布上完成顏色、字體、行高等樣式都是通過編輯器實(shí)例的配置項(xiàng)或API設(shè)置的不是簡單的CSS覆蓋。覆蓋編輯器內(nèi)部樣式的正確做法是在初始化時傳入主題配置const editorInstance new Editor({ target: container, color: #2c3e50, background: #ffffff, fontSize: 16, lineHeight: 1.75, fontFamily: PingFang SC, Microsoft YaHei, sans-serif, defaultStyle: { font-size: 16px, line-height: 1.75 } })這些配置項(xiàng)中color和background控制整個編輯區(qū)的文字顏色和底色fontSize和lineHeight控制默認(rèn)字號和行高。值得提醒的是color和background的值必須是合法的CSS顏色格式否則編輯器啟動階段會拋異常。如果你想把工具欄區(qū)域也改成你自己的品牌色工具欄區(qū)域的樣式是可以通過CSS覆蓋的。比如.editor-container .toolbar-wrap { background-color: #f6f8fa; border-bottom: 1px solid #e1e4e8; }但這些CSS只會作用于工具欄和彈窗外殼不會滲透到Canvas內(nèi)部的文字渲染。想改編輯器內(nèi)部某一類元素的樣式比如讓所有鏈接顯示為主題色需要在編輯器初始化后調(diào)用樣式接口editorInstance.setStyle({ a: { color: #1a73e8, textDecoration: underline } })setStyle接口接收一個對象key是元素標(biāo)簽名value是樣式對象或CSS字符串。這里能設(shè)的樣式受限于Canvas渲染能力比如不支持box-shadow這類復(fù)雜效果陰影和圖標(biāo)的渲染需要額外的插件支持。理解了這條邊界定制編輯器視覺時才不會在錯誤的方向上浪費(fèi)時間。5. 避坑canvas編輯器最常見的五個翻車現(xiàn)場5.1 現(xiàn)象一編輯器寬度撐不滿容器內(nèi)部文字換行錯亂編輯器渲染出來后寬度沒有跟隨父容器自適應(yīng)文字換行位置看起來完全隨機(jī)。檢查后發(fā)現(xiàn)問題不在編輯器配置而在容器CSS。設(shè)置編輯器style屬性傳入的是width: 100%但父容器本身沒有明確寬度導(dǎo)致編輯器初始化時拿到的是0px或無效寬度Canvas繪制時只能按默認(rèn)寬度渲染。解決方式是確保父容器在編輯器初始化前已經(jīng)完成布局并具有確定寬度。在Vue3中如果在onMounted時父容器的寬度還要依賴異步數(shù)據(jù)計(jì)算需要等待寬度計(jì)算完成后再實(shí)例化編輯器或使用nextTick后再執(zhí)行初始化。await nextTick() editorInstance new Editor({ target: container })還有一個間接原因是初始化后容器寬度變化了比如側(cè)邊欄折疊導(dǎo)致主區(qū)域變寬編輯器不會自動重新測量Canvas寬度。需要手動調(diào)用重排editorInstance.repaint()在側(cè)邊欄折疊事件回調(diào)里執(zhí)行這個操作編輯器會重新計(jì)算寬度并重繪畫布文字換行就會恢復(fù)正常。5.2 現(xiàn)象二切換路由后再次進(jìn)入頁面卡死或白屏進(jìn)入頁面編輯器能正常使用切走再切回來頁面卡死或編輯器區(qū)域白屏。這種情況十有八九是編輯器實(shí)例沒有銷毀或者銷毀不徹底。前面提到過onBeforeUnmount中要調(diào)用destroy()并清理DOM節(jié)點(diǎn)。但還有一種情況是你沒有在onBeforeUnmount中銷毀而是依賴Vue3的KeepAlive緩存頁面組件被緩存了但編輯器實(shí)例在某個時點(diǎn)被外部拿走了引用。等再次激活時原來的Canvas已經(jīng)被瀏覽器回收重新渲染就出現(xiàn)白屏。解決思路是不要依賴KeepAlive去管理編輯器實(shí)例的生命周期。在onActivated時檢查實(shí)例是否存在不存在就重新初始化在onDeactivated時銷毀。表單類的編輯器建議完全不使用KeepAlive用顯式的v-if切換加onMounted初始化替代。5.3 現(xiàn)象三setValue輸入HTML后樣式丟失、圖片不顯示通過setValue把一段含圖片的HTML塞給編輯器結(jié)果文字有內(nèi)容、樣式全部丟失圖片直接不顯示或顯示為破圖。這個問題的根源是Canvas-editor不認(rèn)識非它自己生成的HTML結(jié)構(gòu)。解決方式在setValue之前做一層轉(zhuǎn)換。最實(shí)用的是把HTML字符串轉(zhuǎn)換成編輯器能識別的節(jié)點(diǎn)結(jié)構(gòu)這一步可以在前端做也可以在后端做。前端做的話我通常寫一個公共轉(zhuǎn)換函數(shù)把常規(guī)的p、img、a標(biāo)簽結(jié)構(gòu)轉(zhuǎn)為編輯器預(yù)期的帶>instance.trigger(contentChange)如果回調(diào)執(zhí)行了說明注冊邏輯正常問題出在內(nèi)容變更檢測本身。如果沒執(zhí)行檢查實(shí)例初始化的onChange寫的是不是字符串而不是函數(shù)。5.5 現(xiàn)象五工具欄按鈕全部灰色點(diǎn)擊無響應(yīng)編輯器內(nèi)容區(qū)和工具欄都正常渲染但所有按鈕灰色不可點(diǎn)或者能點(diǎn)但沒有效果。這是最讓人頭疼的一種狀態(tài)。按鈕灰色一般是編輯器實(shí)例沒有設(shè)置readonly: false或?qū)嵗驗(yàn)槟撤N原因進(jìn)入了只讀模式。Canvas-editor初始化時readonly模式默認(rèn)是關(guān)閉的但如果你在初始化后調(diào)用了instance.setReadonly(true)就會遇到這樣的問題。檢查初始化參數(shù)把readonly顯式設(shè)為false。按鈕能點(diǎn)但沒效果則要檢查命令執(zhí)行時是否選中了文本。Canvas-editor的加粗、斜體這類命令需要選區(qū)存在才有效果沒有選區(qū)的情況下執(zhí)行這些命令會被內(nèi)部攔截。這不算bug但普通用戶會認(rèn)為按鈕壞了。排查思路是在選擇文本狀態(tài)下看按鈕是否可用再用instance.getRange()查看當(dāng)前選區(qū)是否存在。6. 進(jìn)階表單場景里把編輯器包成受控組件編輯器跑通后下一個需求一定是把它塞進(jìn)表單。Canvas-editor本身不是一個受控組件它的值變化不會自動同步到表單狀態(tài)需要我們在外面做一層封裝。我日常的習(xí)慣是把它封裝成一個Vue3受控組件對外暴露v-model。封裝的核心是處理好兩個方向的同步外部值變化時更新編輯器內(nèi)容編輯器內(nèi)部變化時通知外部更新。template div refcontainer classrich-editor/div /template script setup langts import { ref, watch, onMounted, onBeforeUnmount } from vue import Editor from canvas-editor/editor const props defineProps{ modelValue: string }() const emit defineEmits{ (e: update:modelValue, value: string): void }() const container refHTMLDivElement() let editor: Editor | null null let isInternalChange false onMounted(() { if (!container.value) return editor new Editor({ target: container.value, toolbar: [[bold, italic]] }) editor.setValue(props.modelValue || ) editor.on(contentChange, () { isInternalChange true emit(update:modelValue, editor!.getHTML()) }) }) watch(() props.modelValue, (newVal) { if (!editor) return if (!isInternalChange) { const current editor.getHTML() if (current ! newVal) { editor.setValue(newVal || ) } } isInternalChange false }) onBeforeUnmount(() { if (editor) { editor.destroy() editor null } }) /scriptisInternalChange這個標(biāo)志位是防止死循環(huán)的關(guān)鍵。編輯器內(nèi)部觸發(fā)變更會emit更新父組件值父組件值變化又觸發(fā)watch去setValuesetValue本身在內(nèi)容不同時又會觸發(fā)contentChange這樣會形成無限循環(huán)。通過標(biāo)志位打斷這個鏈路后外部回顯和內(nèi)部輸入互不干擾。表單校驗(yàn)部分我一般會把編輯器內(nèi)容按純文本計(jì)算長度而不是直接取HTMLfunction getPlainText(html: string): string { const div document.createElement(div) div.innerHTML html return div.textContent || }校驗(yàn)規(guī)則里字?jǐn)?shù)限制基于純文本長度避免HTML標(biāo)簽計(jì)入字?jǐn)?shù)。這是產(chǎn)品側(cè)很常見的需求在封裝組件時提前內(nèi)置這個能力會讓表單校驗(yàn)省很多事。實(shí)際項(xiàng)目里我還加了一個防抖邏輯把contentChange觸發(fā)時的emit操作延遲300ms執(zhí)行避免用戶輸入過程中高頻觸發(fā)父組件重新渲染減少大內(nèi)容編輯時的卡頓感。這套封裝從第一次做表單集成開始后來被我在模擬項(xiàng)目X和某跨平臺系統(tǒng)中反復(fù)復(fù)用。從那以后我在每次接富文本編輯器需求時都會強(qiáng)制走一遍受控組件封裝流程先把值同步鏈路理清再寫業(yè)務(wù)邏輯幾乎沒有再遇到過同步丟數(shù)據(jù)的問題。希望幫到你這包代碼直接跑起來改改就能用。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷激情在线| 综合色、色综合| 99啪啪网| 610018岁成人视频| 五月丁香六月婷婷久久| 激情丁香婷婷| 天天性视频| 婷婷成人五月天| 五月天激情图| 丁香五月1页| 99视频| 亚洲丁香五月| 九热在线这里有精品6| 狠狠婷婷综合| 国产精品久久久久久久久久| 婷婷伊人网| 激情五月六月婷婷综合啪啪| 97成人丁香婷婷| 国产美女无遮挡裸体毛片A片 | 日韩久久成人| 久久香蕉影院| 日日干夜夜干| 思思热久热| 天天日天天干天天爱| 色婷婷亚洲综合av| 1级欧美日韩| 婷婷综合五月| 五月天久久久| 国产欧美第五十五页| 五月天中文网| sewuyuejiqingwang| 一起草Av| 久操人妻| 欧美久久婷婷| 女婷久久| 色综合久久天天综合网| 五月丁香婷婷色色色| 色婷婷8| 五月丁香激情综合| 色五月 五月婷婷| 四月丁香五月婷婷久久| 色色日本| 色噜噜狠噜噜视频| 日本婷婷| 荷兰av一级| 婷婷丁香五月天小说| 亚洲综合网区| WWW,色五月| 3p久久| 激情超碰网| 国产国产乱老熟女视频网站97| 亚洲AV日韩无码| 国产婷婷五月天| 婷色成人| 嫩草AV久久伊人妇女超级a| 激情涩涩网| www.色综合| 色九月国产| 精品九九网| 沈娜娜av| 人人操人人爽成人AV| 亚洲久艹| 九九精品自拍| 日日夜夜狠狠婷婷色| ww久久| 国产综合婷婷| 99热91| 久综合网| www.99热最新视频8| 久久婷婷色| AV在线中文| 色婷婷在线播放| 91色噜噜狠狠狠狠色综合| 人人操碰| 深夜男女福利刺激影院一区| 婷婷久久午夜网| 综合激情五月四射婷婷| 五月天成人手机在线视频| 天天色爽| 五月深爱激情网| 日本操逼九九九九58日本操逼| 五月综合精品| 9l视频自拍九色9l视频在线观看| 色婷婷亚洲精品天天综| 色色欧美色色色| 五月停性愛| av操B网站| 香蕉久久av一区二区三区| 粉嫩AV久久一区二区三区| 天堂成人A片永久免费网站| 日本V在线观看不卡视频网站| 成人无码髙潮喷水A片| 中文字幕丰满孑伦无码专区| 92久操视频| 午夜日韩久久久网站| 激情久久久久久久久| 五月丁香好婷婷A片网| 成人视频一区| www.ppypp| 久久99热这里只频精品6学生| 丁香五月在线自慰| 搡BBBB搡BBB搡五十| 91无码色色| 一区二区三区XXXXXX| 99九九中文字幕视频| 婷婷丁香激情综合色情| 五月丁香av在线| www开心激情网| 九九热视| 日本猛少妇色XXXXX猛叫| 日韩丁香涩| 超碰99成人在线| 激情黄色小说色五月| 性爱AV天堂| 六月色色婷婷| 婷婷开心激情| 99视频在线观看网址| 免费黄色片子| 久久亚洲激情五码| 农村熟妇高潮精品A片| 99丝袜精品视频网站| 天天色天天射天天日| 六月丁香婷婷网| 噜噜色婷婷| 欧美激情五月天| www.婷婷激情网.com| 999激情视频| 色五月婷婷天天干| 久久久99视频| 九九激情| 婷婷丁香五月天狠狠| 五月天婷婷AV| 色吧99| 五月婷婷基地| 国产精品美女| 夜色.cnm| 五月天成人手机在线视频| 日韩 中文 欧美| 嫩草极品| 欧美色骚婷婷五月天| 久婷五月| 色播色丁香五月| 日韩欧美一区二区三区四区| www.五月婷婷久久.com| 99啊精典免费视频| 开心色五月天久久久久久久| 这里只有精品96| 中文字幕在线日亚洲9| 九九热思思| 最近中文字幕大全免费版在线 | 婷婷五月情| 久久99大| 久99久热只有精品国产99| 久久97| 婷婷五月丁香性爱| 五月天婷婷五月| 婷香五月激情视频| 五月天激情综合在线| 五月色影院| AV网在线| 五月丁香六月合| 五月婷婷中文| 六月丁香婷婷五月天| 另类小说五月天| 六六久久黄色| 五月丁香六月婷婷亚洲综合| 1024在线视频| 思思热99热| 玖玖色综合色| 夜夜做夜夜愛| 天天久久九九| 色欲一区二区三区精品A片| 欧美性生交XXXXX无码小说| 性爱先锋AV| 亚洲av成人在线| 久久精彩视频99| 五月天夜夜爱夜夜操| 91Chinese在线| 99天堂网| 97色在线| 六月丁香五月激情婷婷| 超级碰 久久9| 国产偷人妻精品一区| 校园春色亚洲色| 69午夜成人影片| 天天射影院| av九九| 欧洲综合视频| 色婷丁香五月| 99热爆在线| 综合图区激情| 日韩国产在线免费观看| 国产精品社区| 色七色九九| 99re久久| 色情丁香五月天| 色婷婷狠狠| 婷婷成人网五月天| 久99999热视频在线观看免费| 热久久思思热思思| 色综合久久久无码中文字幕999| 五月天成人在线精品| 少妇2做爰HD韩国电影| 五月情婷婷五月| 色五月激情五月| 五月五丁香婷婷| 精品人妻在线免费观看| 色五月五月天色婷婷色五月| 丁香六月综合激情| 日本不卡高字幕在线2019| 免费久久这里只有精品99| 色婷青青| 日韩精品一区二区亚洲AV观看 | 国产XXXX搡XXXXX搡麻豆| 成人色情五月天婷婷丁香| 亚洲欧洲另类图片| 激情床戏| 丁香五月激情站| 日本网站久久| 九九热精品| 久久99最新| 99久久欧美| 激情综合网五月婷婷| 日韩操逼大片| 熟妇内谢69XXXXXA片| 大陆肏屄视频| 久久婷婷伊人| 久久3级片| 久草狼人| 久久这里只有精品无码| 九色91美女| 色欲天天综合网| 五月丁香九九九综合| 99人人干人人操| 99热这里只有精品1025| 日韩色色视频www| 99久久精品国产色欲| 久久婷婷五月天| 久久A V无码视频| 五月丁香色婷婷久久| 高清无码网址| 五月婷在线观看| 亚洲综合五月天综合| 艹天天射| 激情五月四色| 日日夜夜天天| 婷婷成人五月天成人文学| 天天狠狠婷婷在线| 先锋资源91| 精品成人无码A片观看香草视频| 人人草开心五月天| 亚洲色小说在线综合| 亚州综合色| 亚洲精品久久久久久久久久吃药| 97精品自拍| 亚洲久久婷婷| 伍月婷丁香婷| 在线视频另类| 五月婷婷九| 狠狠综合网| 色色综合激情| 无码操B| 五月激情综合激情五月| 99自拍视频在线| BlACKEDRAW视频一区二区| 99免费在线| 狠狠干五月天| 99热成人在线观看| 久久婷婷婷婷伊人| 五月丁香婷婷AV天堂| 久久香蕉福利| 热久久色| 久久婷婷激情四射五月天| 国产欧美日韩综合精品一区二区| 久久99视频| 这里只有精品99www| 伊人色五月| 婷婷丁香五月天激情| 亚洲无码99| 日韩精品色| 久久婷婷激情五月天一区二区| 97婷婷狠狠久久综合9色| 日本不卡高字幕在线2019 | 一级无码作爱片| 激情六月天| 亚洲成人免费电影| 五月天色丁香| 婷婷丁香六月天| 超碰成人av| 激情欧美丁香五月| 99热这里只有精品5| 五月丁香六月婷婷综合网缴情| 夜夜爽天天| 九九热黄色| 激情av在线| 97超级操操| 六月婷在线| 性爱技巧五月| 99婷婷精品推荐在线视频| 五月婷激情| 色狠狠色| 九九热九九| 五月婷视频| 丁香六月婷婷| 99精彩视频| 狠狠色婷婷7777久| 丰满少妇猛烈A片免费看观看| 色色色网站| 五月婷婷啪啪| 99国产精品久久久久久久久久久| 伊人久久大香线蕉精品| 色播色丁香五月| 丁香五月婷婷总啪啪| 狠狠色综合五月人人| 变态 另类 在线| 大香蕉久久视频久久视频| 内射在线CHINESE| 色135综合网| 在线观看免费观看在线9久| 婷婷成人五月天| 性做爰A片免费视频A片直播| 久久综合9| 五月婷av| 婷婷97碰碰| 五月丁香激情四射综合| 中文网AV| 亚洲狠狠狠| 六月合五月婷| 99黄色性生活| 国产精产国品一二三在观看| 婷婷伊人视婷婷婷| 噜噜噜噜婷婷五月天| 激情五月深爱五月| 五月婷婷激情久久| 99精品视频网站| 天天日日夜夜| 极品九九九九九九| 久久这里在精品视频| 五月丁香六月激情狠狠| 国产精品国产| 少妇AB又爽又紧无码网站 | 亚洲色欲欧美一区二区三区| 色五月影视| 九九干视频| 99色视频| 丁香五月婷婷影视先锋| 人妻九九九九| 五月停停直播| 婷婷五月天天爽| 免费看欧美成人A片无码| 人人摸人人摸| 国内外色色色色色成人视频| 99热一本久道| 五月婷婷亚洲综合网| 色五月天天| 婷婷五月激情五月激情| 日本色婷婷| 色啪久| 狠狠干综合网| 五月丁香亚洲综合网| 五月天婷婷在线播放| 色五月首页| 久久99大| 丁香五月自拍| 丁香婷婷色色| 婷婷99狠| 成人婷婷色五月天| 日本精品99网站| 乱乱av| 久超超碰| 毛片毛片毛片毛片| www五月| 六月丁香成人| 深爱开心激情网| 五月天婷婷色色网| 亚洲天堂玖玖| http://www.lingjunshare.com/ | 日韩精品电影| 九九久久视频| 国产肥白大熟妇BBBB视频| 91综合在线观看首页| 26uuu国产色| 色婷婷AV在线| 9999综合99综合人| 婷婷五月天亚洲图片| 成人在线网| 日本人妻久久| 2025年最新亚洲在线欧美| 日本va欧美va国产激情| 99视频35精品视频在线观看| 五月婷在线视频免费看| 青青草伊人婷婷| 99热9| 在线观看亚洲视频影院| 大香蕉在线观看9| 婷婷国产日本欧美| 亚洲va综合va国产va中文| 婷婷色色欧美| 国产色色视频| 9久操| 婷婷中文字幕版| 99热这里只有精品首页| 欧美 日韩 成人在线| 亚洲激情.com| 亚洲激情| 激情五月天综合| 色婷青青| 色五月天视频| 久久色大香蕉| 第四色26uuu| 久久精品99国产精品日本| 亚洲综合新99视频| 丁香婷婷视频一区二区| 五月婷婷亚洲天堂97色婷婷| 久久这里只有精品16| 亚洲综合在线视频| 欧美婷婷五月无砖| 人妻体体内射精一区二区| 99视频超级精品| 97人人干人人操| 色色九九五月天 | 五月天婷婷色播| 丁香婷婷基地| 琪琪理论片| 伊人啪啪网| 亚洲av网站| 人人干人人操人人摸| 一二线视频 另类| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 中文AⅤ大全| 这里只有免费的精品| 亚洲日韩一页精品发布| 五月丁香亭亭天天舔| 99精彩视频网站在线| 五月婷婷中文网| 人妻熟女一区二区AV| 婷婷五月天天| 99热在线播放精品| 婷婷的色色五月天| 色色五月天激情| 婷婷五月天视频| 久久久er热| 色情综合| 久热这里这里有精品| 少妇AB又爽又紧无码网站| 丁香六月婷婷综合| 极品人妻XXXXOOOO| 情婷婷五月天| 日本97人人| 久久人人妻| 91超级碰在线视频| 婷婷色婷婷| 五月丁香av在线| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 香蕉久久国产AV一区二区| XX色综合| 丁香婷婷十月| 五月丁香六月综合基地| 婷婷五月影院| 婷婷五月天综合久久| 婷婷五月天综合久久| 婷婷五月天色播| www.激情五月天.com| 六月色婷婷| 六月婷伊人| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 五月天激情AV| 91热爆在线| 嫩BBB搡BBBB榛BBBB| 色天天综合| 欧美日本国产欧美日本韩国99| 天天色视频| 婷婷五月激情欧美大胆视频| 先锋资源91| 综合色色网| 婷婷六月久久综合导航| 99色婷婷视频| 欧美日韩一区二区三区四区| 婷婷婷婷婷婷婷五月丁香| 26uuu亚洲色| www.99热在线| 国产精品久久久久久久久久免费 | 天天干天天插| 色播五月丁香婷婷| 五月丁香六月综合基地| 五月天sesese| 99精色| 丁香五月乱中文字幕| 大香蕉婷婷五月天| 九久热| 九九無妻| 五月天激情婷婷| 琪琪理论片| 婷婷五月天AV在| 开心五月激情网| 极品人妻VideOssS人妻| ji'qing'luan'ren'lun| 啪啪激情综合| 97香蕉人人在线观看| 亚洲激情四射| 91精品婷婷国产综合久久| 思思久热| 色必久悠悠影院| 狼人婷婷综合| 九九中文色色| 日逼AV影音先锋男人资源站| 天天插天天射| 91一起艹| 婷婷五月天天爽| 色丁香久综合在线久综合在线观看| 爆乳熟妇一区二区三区爆乳| 加勒比久热| 六月婷婷综合| 婷婷五月天亚洲| 综合噜噜| 五月天综合在线观看| 五月夜丁香| 亚洲五月婷婷| 日韩性视频| 久久99免费视屏| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 婷婷五月在线观看| 久久三级视频| 色停停香蕉视频| 久久99热这里只有精品| 99热这里只有精品最新网址| 五月天欧美激情| 激情五月天婷婷久久久久久久久久久| 色五月婷婷av| 亚洲六月色婷婷| 五月婷婷色白丝| 精品一区久热| 亚洲亚洲人成综合网络| 99在线观看| 97色欧美| 99热资源在线| 色99网| 丁香五月激情六月综合| 开心六月婷| 9久久久| 操比激情五月| 99热99| 色欧美日| 一级二级色大片| 成人午夜在线视频| 91视频免费后入强操| ady狠狠入| 东北熟女高潮99综合99| 欧美色偷偷大香| 9l久久久视频| 五月激情综合性爱| 国产1区2区3区| 大香蕉99| 丁香五月天AV在线| 乱女乱妇熟女熟妇综合网站| 管管補管管紱| 丁香婷婷成人在线播放| 五月色婷婷综合| 最新丁香六月婷婷| 久大香蕉| 99热精品无码| 国产69久久久欧美黑人A片| 国产美女无遮挡裸体毛片A片| 欧美S码亚洲码精品M码| 久久九九思思| 午夜丁香综合婷婷| 97干在线视频| 色999五月色| 日韩综合大黄| 99爱视频| 五月天国产| 精品夜夜澡人妻无码AV| 99视频啪啪| 色五月激情综合| 丁香婷婷性爱| 亚洲十月婷婷综合| 色色国产| 丁香五月综合| 婷婷五月激情综合网| 碰人人操| 亚洲激情淫网| 五月天激情无码专区| 六月激情综合| 五月丁香激情综合网| 97超碰婷婷五月天| 嫩草视频观看| 开心丁五月| 婷婷情色激情| 丁香色五月 97干| 天天日夜夜爽| 五月丁香婷婷啪啪网| 99热精品在线| A网在线欧洲| 日本欧美国产| 91精品久久久久久久久久| 碰超在线九色| 激情婷婷内射| 五月天色婷婷综合| 天天做天天爽| 日韩黄色电影| 综合色天天| 色情五月综合婷婷| 任你爽视频| 久久免费高| 婷婷伊人综合中文字幕| 深爱激情网噜噜色| 色色色色色色色色五月先| 日日躁夜夜躁狠狠久久AV| 日本久草福利| 无码激情精品色婷婷久久久久| 六月激情久久| 国产亚洲成AV人片在线观黄桃| 99玖玖人人| 成人色站,在线视频,看片-SS1AV| 夜夜撸夜夜骑| 五月天激情色色| 狠狠爱婷婷爱| 色婷五月天激情| 91色久| 丁香五月网| 久久久久99精品成人片| 亚洲精品色| 日本久草福利| 久久婷婷五月综合啪| 九九视频在线| 激情av在线| 色婷婷在线视频综合| 九九Av| 色婷婷影音| 婷婷五月丁香基| 丁香六月啪| 久久丁香九| 五月天全国最大成人网| 97热这里只有精品| 色久女| 婷婷丁香小说| 这里只有精品久久| 五月婷婷激情| 五月天另类激情在线| 大香蕉综合网| 97色在线观看视频| 色五月天成人| 思思热99er| 丁香五月综合在线| 丁香啪啪| 九月丁香婷婷综合激情| 激情综合色网| 91色涩| 五月丁香婷婷网在线在线| av五月天婷婷丁香| 日日夜夜噜噜爽爽| 久热在线中文字幕色999舞 | 先锋五月婷婷丁香草草| 久久人人九九| 久久激情五月天| 丁香六月久久| 欧美日韩中国| 五月天国产| 99久久終合| 婷婷五月天综合小说网| 久久日婷婷| 丁香五月激情无码视频| 波多婷婷久久| 激情五月婷婷色| 九九九干精品| 99re这里只有精品视频了| 激情AV综合| 精品久久久久久久久久久久人妻| 色爆五月| 天天情色综合网| 亚洲成AV人片在线观看| 懂色AⅤ| www.夜夜爱.com| 思思热在线免费视频| 欧美A片在线视频免费观看| www激情网| 国产毛片精品一区二区色欲黄A片| 九九AV在线| 婷婷另类小说| 日本激情91| 9l视频自拍9l九色成人| 九九综合视频在线观看| 激情小说五月天| 婷婷五月天天| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 色色五月天com| 99熟女啪啪视频| 亚洲成人AV在线观看| 日本九九九九| 色五月久久成人婷婷| 免费无码毛片一区二区A片 | 欧美日韩99| www色婷婷| 天天粽合合合合| 香蕉曰比| 91久久九久久九久久九久久九久久| 超碰色色综合| 婷婷久久五月天| 五月婷婷丁香av| 亚洲精品国产A久久久久久| 五月丁香六月花| 亚洲综合在线网站| 91青娱乐青青草| 国产成人在线不卡AV| 91久热| 婷婷丁香五月精品| 停停六月 综合| 亚洲av成人在线| 久久久er热| 六月婷婷天堂| 另类A片| 国产六月婷婷| 97自拍99| 五月天综合| 亚洲色情网站| 婷婷久久综合| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 激情AV在线| 久er7久热| 五月丁香天堂| 丁香五月欧美| 丁香狠狠色婷婷久久无码视频| www.99热这里精品| 97人人干人人操| 五月天婷婷色小说| 五月天婷婷基地综合网| 免费看欧美成人A片无码| 色噜噜五月天| 五月婷婷成人网首页| 欧美久人人| 免费黄色片子| 六月激情综合| 五月丁香AV、伊人业余、性色熟妇| 热九九九九| 91操操| 婷婷成人五月天| 丁香婷婷五月天色播| 九九九九大香蕉| 色日本颜射| 欧美日朝成人| 可以看的AV网站| 思思久ren热| 第四色五月婷婷| 九九九激情综合| 久久色婷婷| 丁香五月婷婷激情蜜桃| 婷婷97狠狠干| 另类激情五月| 九一九九黄色| 国产SUV精品一区二区883| 五月婷婷黄色| 99热这里只有精品首页| 综合狠狠伊人| 91碰操| 风流少妇A片一区二区蜜桃| 日韩99视频| 久久这里有精品视频在线免费观看| 久思思热视频在线观看| 色播五月天婷婷老师| 97搞在线| 国产欧美性成人精品午夜| 色五月综合网| 国产免费一区二区三区三州老师F1F1.CC| 九九这里精品| 亚洲色激婷| 天天爽人人综合免费7799| 婷婷成人在线| 国产亚洲成人综合| W色综合| 乱精品一区字幕二区| 激情五月婷婷综合| 丁香五月婷婷av| 色 色 色综合com| 五月丁香六月欧美| 婷婷五月丁香基| 激情美女五月天| 五月丁香激情综合网| 操日视频| 五月天婷综合| 日韩一级网站| 久久综合五月| 欧美色必爱| 超碰人人色| 99re在线精品视频| 五月丁香六月情| 思思国产99| 婷婷丁香色情| 久久综合激情婷婷激情| 婷婷激情五月天在线| 激情五月天www| 婷婷五月丁综合| 常久最新免费的色吊丝| 九九精品在线观看视频6| 66精品成人免费网站在线观看| 99热这里只有精品96| 九九操综合网| 六月婷婷亚洲| VfJxEwPH| 国产激情综合五月久久| 天天干天天干天天干天天干天天干| 久久视频在线| 色色色热| 久久综合中文字幕| 操操人人| 99精品综合| 丁香五月婷婷五月| 国产欧美精品AAAAAA片| 综合AV网| 91干99| 婷婷久久影院| 中文字幕在线免费| 99热久草| 99视频在线播放大全| 国产熟女一区二区三区五月婷| 97资源碰碰| 思恩热国产视频右线观看| 狠狠 婷婷| 欧美性爱5月天天天看| 天天夜夜爽| 日本婷婷五月天| 丁香五月婷婷啪啪啪| 岛国av网站| 国产黄大片在线观看画质优化| www.91五月| 美国天天操无码| 五月丁香六月婷婷啪啪| 九九热只有这里精品| 久久996re热这里只有精品无码| 狠狠狠五月婷婷六月丁香| 久久亚洲激情五码| 任你日视频| 亚洲色五月| 伊大人久久| 久超超碰| 99ri国产| 2025天天爽天天摸| 第五色婷婷| 欧美 日韩 成人在线| 久久丁香五月婷婷| 欧美成人精品A片免费一区99 | 五月丁香婷婷六月| 色五月综合网| 欧美顶级少妇做爰HD| 婷婷五月天丁香久久| 天天色丁香| 伊人丁香婷婷东京| 噜噜狠狠色| 能看的av| 丁香六月激情国产| 婷婷亚洲色| 夜夜撸天天日| 97狠狠色| 五月婷婷久草| 51XX午夜影福利| 久久婷婷欧美| 亚洲av网站在线观看| 中文字幕在线免费看线人| 91丨九色丨老农村| 久久99最新| 婷婷五月天成人| 国产又粗又大又爽又黄| 激情五月综合久久| 五月色欧洲| 操人久久| 麻豆忘忧草午夜| av在线免费网站 | 国产毛片操B| 91碰| 婷婷色情五月| 天天色天天操天天射| 色色色色色日韩午夜激情| 人人爽天天莫| 国产欧洲欧洲精品久久| 99热这里| 亚洲av成人在线| 深夜A片| 26uuu国产| 91ncm视频| 日韩色色视频www| www.天天干| 久热99久热| 激情五月天婷婷图| 婷婷五月激情中文字幕| 亚洲精品V天堂中文字幕| 伊人色综合影院视频| 五月婷婷欧美激情| 婷婷五月天成人| 五月久久婷婷| 激情影院丁香五月| 97日本在线播放| ss五月天激情| 欧美日韩999| 97电影99热| 丁香五月天网友自拍啪啪啪视频| 久久人妻视频| 99re在线观看| 超碰日日操| 熟美女麻豆| 夜夜做夜夜愛| 日本综合久久| 色五月天丁香婷婷色| 狠狠狠狠狠草| 久久AAAA片一区二区| 久久久久久久综合狠狠综合| 婷婷五月天影院| 日韩精品超碰在线观看| 色婷婷狠狠| 久操香蕉| 秋霞影音91人妻久久| 婷婷久久久| 九九热这里只有精品556| 91久久久久久久久| 久久久性爱视频| 性爱久久| 99碰视频| 开心五月天激情网| 日韩美女在线视频19| 九九热视频免费观看| 99精品在线观看| 伊人久久五月天| 丁香五月婷婷激情网| 久久丁香五月| 丁香五月婷婷色情综合| 在线观看欧美| 99热精品99| 色天堂在线| 啪啪操超碰| 大香伊人婷婷影院| 色狠狠色狠狠| 日逼影音先锋AV男人资源站| 色婷婷五月中文字幕在线dvd| 亚洲黄色操逼| 玖玖资源站中文| 成人VAV视频在线观看| 色五月色五天免费视频| 丁香婷婷五月人体| 激情六月色| 丁香五月大香蕉AV| 久婷久婷| 中文字幕激情综合| 在线观看亚洲视频影院| 亚韩在线视频| 久色视频| 天天狠狠插| 久久ri精品| 五月婷婷丁香在线| 婷婷丁香五月天大香蕉| 五月丁香六月成人| 久久婷婷视频| 强壮公让我夜夜高潮A片视频| 我爱宗和色| 在线看AV| 五月婷婷啪啪综合网| 国产ava| 激情四射网| 99热99网| 久草丁香婷婷1024| 开心深爱激情网| 九九99九九99九九99视频网| 久久538| 在线色五月婷婷| 9九九久久精品无码专区| 五月天激情美女久久| 国产精品久久久久久喷浆| 天天色激情| 欧洲一区二区| 婷婷色色网| 99免费视频网| 97干网站| 麻豆AV一区二区三区| 丁香五月婷婷影院| 99色综合网| 疯狂做受XXXX高潮A片| 五月激情久久| 色婷婷大香蕉| 精品香蕉99久久久久网站| 激情五月天婷婷视频| 4399高清无码视频| 天天射影院| 亚洲五月天婷婷在线| 五月婷啪啪| 开心五月色婷婷综合开心网| 99久热这里只有精品| 99精品在线| 久久婷青青草原| 久久久.COM| 伊人在线婷婷草| 一起草av在线观看| 99久久9| 五月情四婷婷| 1024成人在线观看| 欧美美女视频| 99色色网| 伊人日日干| 五月天婷婷綜合院| 成人免费黄色短视频| 九热...av| 天天操天天谢| 91九色国产| 色综合婷婷99| 桃色五月天| 婷婷五月天激情电影小说| 激情小说婷婷小说| 99色.com| 久久性爱网| 婷婷性爱网| 99成人精品视频| 五月婷婷综合网| 99精品偷自拍| 开心五月综合激情网| www.狠狠干com| 欧美性二区| 欧美人人女女精品综合五月天| 香蕉久久国产AV一区二区 | www.婷婷| 看片视频在线免费日产在线看| 欧美色六月婷婷| 亚洲AV无码成人精品区电影网| 亚洲妇女熟BBW| 色综合综合色| 激情丁香六月| 能看的AV网站| 这里只有精品在线视频精品| 一操久久| 激情五月婷婷色综合| 日本三级日本三级99| 97性视频| 青草少妇激情| 久久99这里只有精品视频| WWW.99热| 99久久精彩视频| 婷婷在线中文字幕| 五月婷婷色色色| 久久综合五月天| 99爱免费视频| www.com操| 天天色情站| 九九综合色| 91色在线| 色综合久久综合| 色欲AVV| A片试看120分钟做受图片| 激情五月天影院| 日韩狠狠色| 五月丁香婷婷深深爱| 狠狠色综合久久| 加勒比色色| 99九九在线| 国产综合婷婷| 日韩无码性爱| 91趴趴| 欧美高潮9| 亚洲无码影音| 久久五月天激情| A片女女女女女女BBBB| 婷婷五月色| 激情五月天丁香| 九九热精品在线| 色综合99| 欧洲色| 国产这里只有精品| 99精彩视频| 尔尔AV一区| 超碰com| 美女激情综合| 五月天堂婷婷| 玖玖婷婷五月天| 99热18| 色播五月网| 天天爽天天日| 99色婷婷| 国产成人精品一区二三区熟女在线 | 情色婷婷五月天| 任你日视频| 婷婷四色五月| 99热这里是精品| 婷婷丁香人妻天久久| 99色这里| 日日色五月天| 久久一二三视频| 色爱99| sesesesezonghe| 九九视频精品这里只有| 天天插天天日天天爽| 天天天天做夜夜夜夜做| 99er精品视频| 亚洲婷婷欧美婷婷| 色婷婷综合久久久久| 婷婷色在线| 久久激情网| 日日懆天天懆| 国产这里只有精品| www.五月婷婷.com| 日日操夜夜擼| 97碰精品| 視频福利乱色| 色婷婷影| 日本色道视频网站| 亚洲色激婷| 天天日天天做天天操| 可以看的AV网站| 丁香 久久| 狠狠干,狠狠操| av一级棒av| 亚洲黄色av网站| 99熟女视频| 丁香婷婷大香蕉| 色婷婷黄色网络| 亚洲另类婷婷五月综合| 2025色婷婷| 99久久久免费| 久久精品一区二区三区四区| 色五月激情图片| 久99视频在线观看| 五月丁香六月激情综合啪啪| 999影院成人在线影院| 综合色播| 五月婷激情| 清纯唯美 激情四射| 婷婷九九视频| 天天日日人| 色婷婷五月天不卡| 亚洲综合网 665566| 国产精自产拍久久久久久蜜 | 九九99九九99偷拍视频免费看| 久99久视频| 色婷婷丁香AV综合| 五月丁香六月婷| 五月天色导航| 91超级碰在线| 婷婷综合在线| 激情五月四色| 欧洲不卡视频| www.色五月天.com| 五月天婷婷av| 色九月丁香婷婷蜜桃在线观看| 秋霞免费三级片| 久久人妻视频| 欧州婷婷五月天综合| 在线另类| 五月天婷婷综合免费| 搡BBBB搡BBB搡五十| 67194成I人在线观看线路1| 久久婷婷五月天综合| 秋霞成人毛片一级A片| 五月天色官网| 五月天激情视频| 俺去也五月| 激情性爱五月| α久久| 天天插天天插天天插天天插| 色久综合| 狠狠色大香蕉| 色 五月婷婷基地| 色玖玖爱| 九月色婷婷综合亚洲| 精品在线| 五月丁香六月成人| 丁香五月性| 九九中文字幕九| 午夜爱爱爱成人| 91 九色 熟女| 婷婷丁香www视频日本韩国| 激情五月综合免费| 久热这里| 九九性视频| 久色网址| 青草五月天| 激情综合网激情五月俺也去| 激情综合5| 在线观看免费狠狠色丁香香综合| 婷婷丁香91综合| 精品人人操| 狠狠狠狠狠狠| 国产精品成av人在线视午夜片| 五月天激日本色情在线| 色玖玖综合网| 丁香五婷| 亚洲精| 97干在线| 99热啪啪| 欧美三日本三级少妇三99| 欧美高潮9| 五月丁香九九九综合| AV在线中文| 98永久精品| 婷婷激情五月综合| 日韩国产在线精品| 好好日激情五月天| 五月天色图| 天天肏高清在线| 这里只有精品免费 | 亚洲熟妇AV综合网五月丁香伊人| 久久婷婷影院| 91精品国产99久久久久久天美| 日 日干 日日做| www.超碰在线| 成人五月天综合网| 午夜丁香| 激情另类综合| 99综合| 婷婷九月丁香| 99久久婷婷国产综合亚洲| www.深爱激情| 黄色91在线观看| 综合啪啪| 97操在线视频| 天天色天天日| 99热6这里之有精品| 少妇AB又爽又紧无码网站| 甈吧vv| 亚洲成人av中文| 婷婷情爱五月天6| 久久久久久99精品无码| 亚洲av网站| 丁香综合伊人| 一级黄在线| 色五月丁香五月天| 激情文学第四色婷婷丁香五月| 色综合久久44| 综合久久婷婷五月丁香| 成人无码精品1区2区3区免费看 | 天天操夜夜操| 色丁香综合影院| 色婷婷yy久| 久9免费视频| 久久精品爱爱| AV中文网| 五月丁香五月婷婷| 色色婷婷丁香| 777米奇影视第四色| 久久小片| 日本三级中文字幕| 婷婷久草| 久久这里只有欧美| 狠狠色噜噜狠狠| 国产毛片精品一区二区色欲黄A片| 五月丁香婷婷成人伊人网| 色9999综合久久| 久久久.COM| 天天摸天天舔天天爽| 久久精99| 久久激情综合| 97色色色色色色色色色色色色色| www.九九婷婷| 日本色色色| 伊人网色婷婷五月天| 天天插天天射天天干| 中文字幕在线观看视频www| 久久精品亚洲热| 99热亚洲| 这里只有精品96| 偷拍91九色| 五月丁香激情综合网官网| 五月丁香最新| 五月丁香色色网| 天天天天天日| 婷婷放心五日爱| 玖玖@三月天天丁香婷婷| 亚洲精品电影| 六月婷婷国产| 狠狠爱综合| 99色在线观看视频者| 九九aV| 996日日爱| 色波激情五月天|