有人用过tinymce编辑器么,想在光标位置插入内容,在弹出的dialog(是跨域的)中选择内容后,点击确定,关闭弹出窗口,将选中的内容信息myHTML插入到编辑器中的记录的光标位置, 我的写法是 :
tinyMCE.execCommand("mceInsertContent", false, myHTML); 
 最后发现火狐FF下是正常的,即在光标地方插入我的内容myHTML,
而在IE6\7\8下 ,都会把原来所有的内容都覆盖掉,有人碰到类似的问题吗,请帮忙回答如何解决

解决方案 »

  1.   

    自己解决了,
    原因:是由于IE下,在弹出的dialog(是跨域的)中选择内容后,原来的光标位置丢失了,所以导致在插入的时候,找不到原来的光标位置,所以出现以上问题。
    解决思路:在弹出窗口前,记录IE的编辑位置,到插入的时候,复位光标位置然后再插入。
    解决方法:
     1、      //弹出窗口前,记录IE的编辑光标
              var ieSelectionBook;
              ieSelectionBook = tinyMCE.get('myEditor').selection.getBook
             
             // 在弹出的dialog,点击确定往编辑器插入内容前,复位IE的编辑光标
              tinyMCE.get('myEditor').selection.moveToBook(ieSelectionBook);
             // 往编辑器插入内容
             tinyMCE.execCommand('mceInsertContent', false, output );
      这个种写法在IE6下是OK的,但是到了IE7、IE8下就失效了,原因是tinyMCE的该API方法不支持IE7、IE8。
     ---------------------------------------------
    2、      //弹出窗口前,记录IE的编辑光标
              var ieSelectionBook;
              tinyMCE.activeEditor.focus();
     ieSelectionBook = tinyMCE.activeEditor.selection.getBook();
              
             // 在弹出的dialog,点击确定往编辑器插入内容前,复位IE的编辑光标
              tinyMCE.activeEditor.selection.moveToBook(ieSelectionBook);         
             // 往编辑器插入内容
              tinyMCE.execCommand('mceInsertContent', false, output );
    这种写法在IE6、7、8下都好用。参考资料:http://tinymce.moxiecode.com/punbb/viewtopic.php?id=19151
      

  2.   

    是的,这只是在IE下的写法,前面也说了,直接用tinyMCE.execCommand("mceInsertContent", false, myHTML);的话,火狐(ff)下是OK的,不需要做记录和复位光标处理,只有在IE下才进行这个处理。
      

  3.   

    用KindEditor - HTML编辑器 在线编辑器 可视化编辑器就不会有这个问题了  只能说tinyMCE编辑器不好