Javascript tinyMCE插入符号在跨内和跨外移动时的定位 简介

Javascript tinyMCE插入符号在跨内和跨外移动时的定位 简介,javascript,css,tinymce,caret,Javascript,Css,Tinymce,Caret,我正在使用tinyMCE编辑标记样式的语法TeX-like公式。为了表示从tinyMCE提交内容后需要处理的位置,我添加了span元素,以允许自定义CSS突出显示标记并向其附加id属性。在跨距和所附段落之间移动时,我很难获得合理的插入符号定位行为-通常,从跨距开始移动到跨距之外时,插入符号会跳过一个字符 一个具体的例子 我在MacBook上运行Firefox12 test.html: eqn和内联类的CSS样式: 按右箭头,插入符号位于CSS呈现的“$”之前,插入符号会移动到“moreinter

我正在使用tinyMCE编辑标记样式的语法TeX-like公式。为了表示从tinyMCE提交内容后需要处理的位置,我添加了span元素,以允许自定义CSS突出显示标记并向其附加id属性。在跨距和所附段落之间移动时,我很难获得合理的插入符号定位行为-通常,从跨距开始移动到跨距之外时,插入符号会跳过一个字符

一个具体的例子 我在MacBook上运行Firefox12

test.html:

eqn和内联类的CSS样式:

按右箭头,插入符号位于CSS呈现的“$”之前,插入符号会移动到“moreinterestingeqnstuff”中第一个m之后,而在“…stuff”中第二个f之后重复相同的过程会导致插入符号跳过跨距后的第一个空格。在将插入符号推入上述错误状态之一之前,单击以选择插入符号位置短暂地正确定位插入符号

问题 我做错什么了吗?如果不是,是否有人知道这是tinyMCE错误还是浏览器错误,以及在这两种情况下是否存在解决方法


更新:好的,我想我必须输入处理伪元素,如下所示,作为tinyMCE人员的特性请求。然而,即使没有伪元素,我也有一个关于插入符号处理的问题。在这个提琴中,我删除了内联类,它删除了前后样式。如果我想直接在跨距后插入字符,我不能,因为将插入符号移动到“…stuff”中最后一个f之后会立即将其放置在跨距内。有没有办法在tinyMCE中禁用此功能,或者实现此行为的最佳方法是什么?

嗯,您在这里没有做错任何事情,但是您需要知道插入符号的移动不会像前后那样处理css伪元素。它们在这里使用。因此,这显然不是一个bug。

您能创建一个tinymce小提琴吗?当然:+1谢谢你完美的小提琴谢谢你的回答。虽然没有伪元素,我仍然有一个更微妙的定位问题——请参见上面的编辑。您描述的也是Word中默认的编辑器行为。为了改变这种行为,您必须在tinymce插件中自己实现这种处理。但我强烈建议你不要这样做,因为这是一个与默认用户体验相反的工作。解决你首先关心的伪元素问题:即使是tinymce人也无法改变这种行为。此css设置的行为在标准中定义,浏览器实现这些设置。无法在伪元素中放置插入符号!言语中的行为有细微的差别;如果我在Word中输入了文本b_old_,请将插入符号放在I之后,然后按backspace键,I将被删除,但插入符号不会在斜体区域内移动,这意味着如果我键入“I”,我将恢复我的原始文本,例如,I未斜体。在tinyMCE中,如果我将插入符号放在带下划线的div后面的空格之后,然后按backspace,则插入符号将移动到span中,这意味着无法在span之后重新键入空格。抱歉,请将带下划线的div替换为带下划线的span:/