我正在使用 Rangy 在富文本编辑器中执行多项操作(设计模式 =“on”)。其中一项功能是粘贴格式化内容,这些内容可以表示用户事先创建的某些预定义字符。所有文本内容都保存在段落元素中。用户可以从这个开始:
<p>The following is a special character: |</p>
其中竖线 (|) 是插入符号的位置。然后,他们选择通过编辑器上的按钮粘贴其中一个“特殊”字符,最终得到以下结果:
<p>The following is a special character: <span class="read-only" contenteditable="false">SPECIAL</span>|</p>
该操作在幕后使用 Rangy 在内部粘贴过程中保持插入符号 (SelectionSaveRestoreModule) 的位置,这可能是在编辑器中对文本进行后粘贴处理,否则可能会弄乱光标的位置。
但是,在 IE8 中,插入符号不能放在之后,<span>
因为似乎存在一个错误,使其位置无效。结果光标出现在<span>
元素之前,甚至无法使用键盘光标控件将光标移动到跨度之后。事实上,它甚至可以防止光标移动到任何后续段落。
最近几天我尝试了几种技术,包括在<span>
s 之后放置额外的字符并取得了一些成功。然而,这些额外的字符在出现时显然会给用户造成混淆并且并不理想。使用零宽度空间在视觉上更好,但在粘贴操作后尝试整理它们会导致问题。
我需要一种“整洁”的方法来支持用户对特殊字符的要求,我自由地接受我可能以错误的方式处理这个问题。