欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javascript开发随笔3 开发iframe富文本编辑器的一点体会

程序员文章站 2022-03-20 15:13:56
就把遇到的问题记录一下。写这篇文章时用的tinymce编辑器就很强大,但毕竟是第三方的,项目也考虑了这些,如果做些自定义的东西不太方便。 1. 判断光标位置的元素(或者选中...
就把遇到的问题记录一下。写这篇文章时用的tinymce编辑器就很强大,但毕竟是第三方的,项目也考虑了这些,如果做些自定义的东西不太方便。
1. 判断光标位置的元素(或者选中的部分)的样式。光标位置改变的时候更新工具栏对应按钮的样式。什么情况下光标的位置会改变呢?是键盘方向键和鼠标点击,于是就判断键盘事件和鼠标事件来执行光标移动的处理。
a. 获得光标位置或选中元素:首先getselection,创建range。然后获得元素,获取到元素之后就可以或得样式、tagname等等,做更多的操作,运行代码:

2. ie不能保持光标位置,这个是在添加超链接时候出现的问题,当不使用浏览器内置的输入框,光标移动其他的文本域里,ie会失去所选中的部分,无法对选中的部分加链接了,解决办法就是:利用range的getbookmark和movetobookmark,然后给iframe的document绑定onbeforedeactivate(getbookmark)、onactivate(moveto),这2个事件的大致意思就是,当被激活和失去激活状态。增加事件之后,就不必保存lastrang或者再其他地方设置bookmark了,可以让ie像其他浏览器一样自动保持光标位置了

3. ie中的撤销与重做 。 当iframe外部有弹出窗口、或者修改html撤销、重做功能将失效。只能归为ie的bug了。。。。也许ie没分清iframe和页面的document,把他们的撤销、重做混道义了。
如下:

如何解决呢? 只能依靠javascript模拟撤销与重做了。网络这方面的资源还是不少的,就不在此详细说明了