在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 基于JavaScript的富文本編輯器,如何實(shí)現(xiàn)添加分隔線(<hr>

基于JavaScript的富文本編輯器,如何實(shí)現(xiàn)添加分隔線(<hr>標(biāo)簽)且該操作支持使用系統(tǒng)ctrl-z撤銷

我現(xiàn)在在做一個(gè)JavaScript富文本編輯器,遇到了一些問(wèn)題,js自帶的execCommand無(wú)法滿足以下兩個(gè)需求:

1.在該行后面添加分割線(即hr標(biāo)簽),于是我選擇直接修改DOM(target是當(dāng)前選中行,每一行不帶格式時(shí)候的標(biāo)簽是p)

 var Hr = '<br><p></p><hr id="hr-' + new Date().getVarDate()+ '"/><p></p><br>'
            var HrDOM = parseDom(Hr)
            var target = this.editor.selection._currentRange.startContainer
            var domType = target.__proto__.constructor.name
            if(domType != 'HTMLParagraphElement'){
                if(domType == 'HTMLLIElement'){
                    if(target.parentElement.parentElement.nextSibling)
                        target.parentElement.parentElement.parentElement.insertBefore(HrDOM, target.parentElement.nextSibling)
                    else
                        target.parentElement.parentElement.parentElement.appendChild(HrDOM)
                }
                else if(domType == 'HTMLImageElement'){
                    if(target.nextSibling)
                        target.parentElement.insertBefore(HrDOM, target.nextSibling)
                    else
                        target.parentElement.appendChild(HrDOM)
                }
                else{
                    if(target.parentElement.nextSibling)
                        target.parentElement.parentElement.insertBefore(HrDOM, target.parentElement.nextSibling)
                    else
                        target.parentElement.parentElement.appendChild(HrDOM)
                }
            }
            else{
                target.innerHTML = Hr
            }

2.清除格式,js自帶的execCommand('removeFormat')只能清除字號(hào)大小(h1,h2這一類)或者是加粗顏色屬性,并不能對(duì)ul、ol、li這一類的列表進(jìn)行清除,于是我還是直接真?zhèn)€表達(dá)式操作DOM

這兩種方式有個(gè)壞處就是當(dāng)我需要ctrl-z撤銷這兩個(gè)操作的時(shí)候就不起效了,不知道有沒(méi)有方法能實(shí)現(xiàn)我以上說(shuō)的功能又不會(huì)發(fā)生無(wú)法撤銷這種毛病呢

回答
編輯回答
涼心人

監(jiān)聽(tīng)ctrl-z事件,自己回滾

2017年8月2日 20:42