【问题标题】:TinyMCE - Inserting content at cursor position in IE doesn't workTinyMCE - 在 IE 中的光标位置插入内容不起作用
【发布时间】:2012-06-26 09:51:29
【问题描述】:

我正在尝试在当前光标位置插入一些内容或替换 TinyMCE 编辑器实例中的选定内容。我正在使用这个:

tinyMCEPopup.editor.selection.setContent(content);

content 是我要插入的 HTML 字符串。

它在 Firefox、Opera 和 Chrome 上运行良好,但在 IE 中无法运行。相反,它在编辑器的开头插入内容,而不是选择。我也试过:

tinyMCEPopup.execCommand('mceInsertContent', false, content);

同样,IE 中的行为相同。用于插入特殊字符的 TinyMCE 代码使用了上面的函数并且有效!我已经尝试在我的插件中复制它,但仍然没有乐趣......

function insertChar(chr) {
    tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');

    // Refocus in window
    if (tinyMCEPopup.isWindow)
        window.focus();

    tinyMCEPopup.editor.focus();
    tinyMCEPopup.close();
}

更新

仍然无法在 IE 中运行,Opera 甚至没有在工具栏中显示我的插件按钮(尽管这可能是一个单独的问题)!我现在也尝试了 jQuery 插件,让编辑器加载,但无法在其上调用 mceInsertContent 方法,即使使用这个:

$('#my-editor-id').tinymce().execCommand('mceInsertContent', false, content);

出现错误:“对象没有方法:tinymce” - 也许我不能从弹出窗口中调用它?!

【问题讨论】:

  • 我的情况也一样。使用 IE>=8 不起作用!我找到了这个link。那家伙解决了它(可能使用jQuery插件)。使用 JS 代码,我确认它不起作用。
  • 谢谢大卫。花了很长时间看这个,几乎放弃它。刚刚用我对 jQuery 插件的经验更新了我的问题。我很确定 IE 或 TinyMCE 都是垃圾,只是还不确定哪个 :) 不过我倾向于 IE!
  • @greg84 也许我不能从弹出窗口中调用它?! Tinymce 情绪插件(emotions.js)使用相同的 tinyMCEPopup.execCommand('mceInsertContent', false,文件);用于在光标位置插入图标,并且适用于所有浏览器,包括 IE ...

标签: internet-explorer tinymce


【解决方案1】:

你试过打电话吗:

tinyMCEPopup.restoreSelection(); 

打电话之前

tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');

【讨论】:

    【解决方案2】:

    问题在于,当您单击编辑器外部的按钮或链接等其他内容时,TinyMCE 会丢失当前光标位置,从而导致其失去焦点。
    要解决此问题,请使用按钮或链接的 mousedown 事件。这样您就可以在失去焦点之前执行插入操作。

    $("#insert_link").mousedown(function (e) {
        var editor = tinyMCE.get("editor");
        editor.execCommand('mceInsertContent', false, "Insert Value");
        e.preventDefault();
    });
    

    【讨论】:

    • 我在 TinyMCE v4.2.6 中使用 jQuery 模式时遇到了上述问题,但仅在我配置了内联文本编辑器时才出现。如果我设置 inline=false,文本将按预期插入到插入符号位置。但是,使用此解决方案,文本插入可以在打开和关闭内联模式的情况下正常工作。
    【解决方案3】:

    在类似情况下对我有用的方法,以及这里可能的解决方案 - 使用

    editor.selection.getBookmark();
    

    在失去编辑器焦点之前 和

    editor.selection.moveToBookmark();
    

    在插入内容之前。

    问题在于,在 FF 中,当您将光标放在包含文本的文本字段中的某个位置时,然后单击其他位置并返回(即通过按 Tab),插入符号将显示在焦点之前的位置丢失了。在 IE 中它会回到开头。我希望这会有所帮助。

    【讨论】:

    • 在不再存在 mce_popup 的 Tiny 更高版本上运行良好。谢谢!
    • 这个修复对我有用。我必须在我正在使用的自定义插件中创建一个局部变量来存储书签“bkmrk = editor.selection.getBookmark()”的副本,然后我创建了一个恢复方法来执行“...返回 editor.selection .moveToBookmark(bkmrk)",通过 "tinyMCE.activeEditor.plugins["fmgattachment"].restoreBookmark();" 从代码中调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多