IE8上的TinyMCE:文本光标问题

时间:2010-11-04 10:02:42

标签: javascript internet-explorer-8 tinymce

当我在ie上键入内容时,按下文本编辑器顶部工具栏上的“粗体”,光标将转到整个文本编辑器的开头。微小的mce中有这个bug吗?

另一方面,如果我选择我输入的文字,并按下控制+ b,没问题;两者都很好用firefox,ie6

3 个答案:

答案 0 :(得分:2)

您是否尝试在IE8中关闭“View-> Caret Browsing”? (由F7切换)

  • 那对我有用

答案 1 :(得分:2)

我遇到了类似的问题,我想要插入的图像总是位于编辑器的顶部。我通过在编辑器的init中设置'onchange_callback'字段来解决它:

tinyMCE.init({..., onchange_callback: 'updateSelectionBookmark', ...});

当屏幕上的任何内容发生变化时,这将调用我的'updateSelectionBookmark'功能,包括编辑器模糊(阅读更多:http://tinymce.moxiecode.com/wiki.php/Configuration:onchange_callback)。我的updateSelectionBookmark看起来像:

function updateSelectionBookmark (ed) {
  ed.updatedSelectionBookmark = ed.selection.getBookmark(1);
}

这将向编辑器对象添加一个自定义属性,该对象将始终包含最新的书签。

然后,每当我需要添加内容时,我都会使用存储的书签:

ed.selection.moveToBookmark(ed.updatedSelectionBookmark);

我想插入HTML,所以我在调用实例命令(在我的情况下,mceInsertRawHTML)之前放了这个。

我希望这可以帮助某人,即使我的答案是迟了几个月。

编辑(几个月后):所以我最初在使用TinyMCE 3.2.2.3时找到了这个解决方案,但我们最近更新到3.4.4以便与IE9兼容。看起来上面的解决方案不像我想的那样好用。我已经找到了(据我所知)完美的解决方案。它与上面的类似,除了触发回调的时间和地点。您应该使用编辑器的onEvent事件:

,而不是在设置中使用onchange_callback
tinyMCE.init({
  ...,
  setup: function (ed) {
    ed.onEvent.add(function (ed, e) {
      ed.updatedSelectionBookmark = ed.selection.getBookmark(1);
    });
  },
  ...
});

这取代了对updateSelectionBookmark函数或onchange_callback设置的需要。 onEvent比onChange工作得更好的原因是因为它在任何可能的事件之后被调用,包括鼠标或按键,所以即使移动但是内容没有改变,光标的位置也能保证保存。

使用上述事件回调设置编辑器后,只需使用上述moveToBookmark即可恢复选择。我在IE9,Chrome,FF6上测试了它,它在文本/表格中插入图像/文本时有效。

答案 2 :(得分:1)

我不会说这是IE8中的一个错误。
光标不会被魔法移动,有人(tinymce)把他放在某个地方 因此,如果光标没有出现在预期的位置,那么它必须是一个不正常的行为。

但我无法提供“bugfix”,因为我的IE8(Win7)不会出现这种情况 你的环境是什么?