- 37
- 0
我现在在做一个JavaScript富文本编辑器,遇到了一些问题,js自带的execCommand无法满足以下两个需求:
1.在该行后面添加分割线(即hr标签),于是我选择直接修改DOM(target是当前选中行,每一行不带格式时候的标签是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')只能清除字号大小(h1,h2这一类)或者是加粗颜色属性,并不能对ul、ol、li这一类的列表进行清除,于是我还是直接真个表达式操作DOM
这两种方式有个坏处就是当我需要ctrl-z撤销这两个操作的时候就不起效了,不知道有没有方法能实现我以上说的功能又不会发生无法撤销这种毛病呢
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

