【问题标题】:tinymce.selection.setContent inserts the text at the begining of the textarea in IEtinymce.selection.setContent 在 IE 的 textarea 开头插入文本
【发布时间】:2011-12-29 10:14:04
【问题描述】:

我为 tinyMCE 创建了一个插件,可以使用 MathJax 在编辑器中插入数学公式。 该插件在 iframe 中打开一个弹出窗口(使用 jQuery),然后启动触发事件以在 tinyMCE 活动编辑器中插入输入的公式。

我的代码在 Chrome 和 Firefox 中正常工作(创建一个 pre 插入到 textarea 的插入符号位置),但在 IE 中,文本插入到 textarea 的开头。

我正在使用这样的 setContent 方法:

tinyMCE.activeEditor.selection.setContent(text to insert, {format: 'bbcode'});

我尝试在插入之前使用ed.focus(),并在 StackOverflow 中找到其他建议,但对我没有任何帮助。

另外,我尝试在打开弹出窗口之前保存插入符号的位置,并在插入时恢复它,但无论如何都没有用。

有什么想法吗?

提前致谢。

【问题讨论】:

    标签: javascript jquery internet-explorer iframe tinymce


    【解决方案1】:

    已解决:

    我知道这不是最优雅的解决方案,但对我有用。

    在打开弹出窗口之前,我插入一个带有特定 ID 的“span”,如下所示:

    var sel = tinyMCE.activeEditor.selection;
    sel.setContent('<span id="_math_marker">&nbsp;</span>');
    

    然后,当弹出窗口关闭并将文本发送回编辑器时,我使用标记查找跨度,然后选择它并调用setContent

    var ed = tinyMCE.activeEditor;
    var marker = ed.dom.get('_math_marker');
    ed.selection.select(marker, false);
    ed.selection.setContent("TEXT TO INSERT");
    

    这适用于所有浏览器!如果弹出窗口在没有插入任何内容的情况下关闭,请记住删除跨度,以避免在编辑器中留下垃圾。

    :-)

    【讨论】:

      【解决方案2】:

      只需删除 .selection 部分,您的代码应如下所示

      tinyMCE.activeEditor.setContent(text to insert, {format: 'bbcode'});

      【讨论】:

        【解决方案3】:

        在IE8中无法激活编辑器,所以需要关注,所以使用

        tinyMCE.activeEditor.focus();

        希望它对你有用。

        【讨论】:

          【解决方案4】:

          试试这样的:

          var myField = tinyMCE.get("SMSBody"); //IE support if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = fieldName; } else if (document.getSelection) { tinyMCE.activeEditor.selection.setContent(fieldName); myField.focus(); }

          希望它对你有用。

          【讨论】:

          • 不起作用:(现在我正在尝试在打开弹出窗口之前保存位置。我会尽快更新。谢谢:)
          【解决方案5】:

          您好,我在这种情况下使用了一个名为 jCaret 的 jQuery 插件。 在大多数常用浏览器(IE 7、8、9 以及兼容模式)中都能完美运行。

          查看下面链接中给出的示例

          jCaret

          谢谢

          【讨论】:

          • 我会看看你的建议。谢谢!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-20
          • 2015-01-08
          • 1970-01-01
          • 2011-05-04
          • 2014-02-19
          • 1970-01-01
          • 2022-07-28
          相关资源
          最近更新 更多