我有一个 Web 应用程序的想法,我需要完全控制嵌入式文本编辑器的功能,并且文本编辑器在所有浏览器中的功能必须完全相同。在这种情况下,标准contenteditable
功能不足以满足我的需求。
所以我一直在尝试各种方法来实现自定义文本编辑器。我的第一种方法是检测鼠标单击以插入插入符号(尽管没有可见的插入符号,因为似乎没有办法实现这一点)。这工作得很好,但不幸的是没有办法显示插入符号(也就是闪烁的工字梁)。
这意味着我的闪烁插入符号也必须是定制的。我只能想到两种好的方法来实现这一点,并且可以在所有浏览器中兼容。
第一个(可能是更好的)选项是在 JavaScript 中实现自定义布局引擎,就像 Google 对 Google Docs 所做的那样。
第二种解决方案(可能更容易)是将每个字符封装在其自己的
<span>
元素中,从而允许将假插入符号放置在特定字符之间。这确实意味着会有很多跨度元素,但这肯定会在利用浏览器布局引擎的同时实现我所需要的。这种方法的另一个好处是我不需要依赖狡猾的浏览器特定的文本选择技巧。
所以我的问题是,选项#2 真的是个坏主意吗?如果是这样,为什么?