tinymce.selection.setContent 在 IE 中的文本区域的开头插入文本
我为tinyMCE 创建了一个插件,可以使用MathJax 在编辑器中插入数学公式。 该插件在 iframe 中打开一个弹出窗口(使用 jQuery),然后启动一个触发器 - on 事件以将输入的公式插入到 tinyMCE 活动编辑器中。
我的代码在 Chrome 和 Chrome 中运行正常Firefox(创建一个pre
,插入到文本区域的插入符位置),但在 IE 中,文本插入到文本区域的开头。
我正在使用这样的 setContent 方法:
tinyMCE.activeEditor.selection.setContent(text to insert, {format: 'bbcode'});
在插入和 StackOverflow 中找到的其他建议之前,我尝试使用 ed.focus() ,但没有任何效果。
另外,我尝试在打开弹出窗口之前保存插入符号位置并在插入时恢复它,但无论如何都不起作用。
有什么想法吗?
提前致谢。
I have created a plugin for tinyMCE to insert in the editor mathematical formulas using MathJax.
This plugin opens a popup in a iframe (using jQuery) and then launches a trigger - on event to insert the entered formula in the tinyMCE active editor.
My code is working properly in Chrome & Firefox (creates a pre
that is inserted in the caret position of the textarea) but in IE the text is inserted at the beginning of the textarea.
I'm using the setContent method like this:
tinyMCE.activeEditor.selection.setContent(text to insert, {format: 'bbcode'});
I tried to use ed.focus()
before inserting and other recommendations found in StackOverflow but nothing worked for me.
Also, I tried to save the caret position before opening the popup and restore it when inserting but did not work anyway.
Any ideas?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
已解决:
我知道这不是最优雅的解决方案,但对我有用。
在打开弹出窗口之前,我插入一个带有特定 ID 的“跨度”,如下所示:
然后,当弹出窗口关闭并且文本被发送回编辑器时,我会查找带有标记的跨度,然后选择它并调用
setContent
:这适用于所有浏览器!如果弹出窗口关闭而没有插入任何内容,请记住删除范围,以避免在编辑器中留下垃圾。
:-)
SOLVED:
I know that it's not the most elegant solution but works for me.
Before opening the popup I insert a "span" with and specific ID like this:
Then, when the popup closes and the text is sent back to the editor, I look for the span with the marker then I select it and call
setContent
:This works for all browsers! Remember to delete the span if the popup is closed without inserting anything to avoid leaving rubbish in the editor.
:-)
只需删除 .selection 部分,您的代码应类似于
tinyMCE.activeEditor.setContent(text to insert, {format: 'bbcode'});
Simply remove the .selection part, so your code should look like
tinyMCE.activeEditor.setContent(text to insert, {format: 'bbcode'});
在IE8中无法获得活动编辑器,因此需要焦点,所以使用
tinyMCE.activeEditor.focus();
希望它对你有用。
In IE8 in cant get active editor, so need to focus,so use
tinyMCE.activeEditor.focus();
Hope it works for you.
尝试这样的事情:
希望它对你有用。
Try something like this:
Hope it works for you.
您好,我使用了一个名为 jCaret 的 jQuery 插件来应对这种情况。
在大多数常用浏览器中都能完美运行(IE 7、8、9 也具有兼容模式)。
看看下面链接中给出的示例
jCaret
谢谢
Hi I used one of the jQuery plugin called jCaret for these kinds of situation.
Worked perfectly in most of the usually used browsers (IE 7,8,9 with compatibility mode as well).
Have a look at the examples given in the link below
jCaret
Thanks