如何完整地取 MSHTML 在线编辑器内容

作者:KeKo 来源:ITPOW(原创) 日期:2006-3-7

我们常用 iframe 做 MSHTML 在线编辑器,假如编辑器 id 为 editor,我们取编辑器内容时也常用 editor.document.body.innerHTML,但这有个缺点,就是只能取到编辑器中 body 区的值。如果我们要把 head 区的值也取出来(比如其中的 title、样式表等不能丢),怎么办呢?

editor.document.childNodes[0].innerHTML,取出来的值就有了 head 区和 body 区,不过两端的 <html></html> 标签没有取出来,这时需要我们手动添加。

有人问,假如 HTML 格式并不规范,比如缺少了 <html> 标签,那么使用 childNodes[0] 不会出错吗?不会的,MSHTML 会自动纠正。不过,如果 <html> 前面有注释之类的,则会算作一个根结点,childNodes[0] 中的 0 也要随之增加了,我们可以利用循环结点来看看是否到达了 html 区域。

有人说,为什么不用 div 做在线编辑器呢,就少了这些麻烦。的确,通过指定 div 的 contentEditAble 属性可以做在线编辑器,但这最大的缺点就是不能容错,比如我多写了一个 </div>,可能编辑器认为,这里就是编辑器的结束标志,后面的代码就处于编辑器以外。

相关文章