1

我希望能够在网页中突出显示少量可编辑文本,而前景色只有一些变化。 (让我们说三个,为了争论。)

我对在线富文本编辑器的恼人经历让我认为,在他们松散的结局中统治是不值得的。所以我有了一个古怪的想法,将几个固定宽度的字体<textarea>元素叠加在一起,并让它们保持同步。每个都有不同的前景色,并且通过背景透明度,您只需在不应该打印某个图层的地方留下空隙。浏览器会进行合成,也许一切都会好起来的。

在 Opera、Chrome、Firefox 和 Safari 中进行的一些探索性测试让我惊讶地发现这确实有效(听起来很疯狂)。但是我想使用非常纯文本的最大原因之一是复制和粘贴是万无一失的。然而,当文本像这样被分解成层时,用户无法选择并以原始形式获取所有文本。

我的第一个冲动是堆叠在顶层文本层上,该层被同步以包含来自所有层的内容,但其颜色是透明的。再一次,它“工作”了......但不幸的是,几乎所有浏览器都从活动的 textarea 颜色提示插入点颜色。这意味着插入符号变得不可见,在某些浏览器中,您选择的文本也是如此。(!)

因此,我向那些比我了解更多的人征求意见。我可以以跨浏览器的方式挂钩这样的堆栈,以便在您制作它时以及当用户“复制”时获得合并文本时选择是可读的?有没有人尝试过这样的事情?或者是否有证据证明“这是一个糟糕的想法,你无法让它发挥作用”?如果我可以在选择更改时获得跨浏览器通知,我可以将合并的字符注入到选择内的点处选择的图层中。:-/

(哦,我们编织了多么纠结的网……)

4

2 回答 2

2

馊主意。你不想去那里。

您正在尝试“重新发明轮子”。一些项目已经解决了这个问题。他们的解决方案被广泛使用,因此在接下来的几周内你能想到的任何东西都更加成熟。

如果您选择一个在线富编辑器并学习如何以您想要的方式处理它,您将花费更少的时间。

您应该阅读Jeff Atwood 的帖子,名为“不要重新发明轮子,除非您计划学习更多关于轮子的信息”

于 2012-11-26T17:32:01.867 回答
1

使用现有解决方案会快得多。请看ACE编辑器:

http://ace.ajax.org

ACE 是一个用 JavaScript 编写的可嵌入代码编辑器。它与 Sublime、Vim 和 TextMate 等原生编辑器的特性和性能相匹配。它可以很容易地嵌入到任何网页和 JavaScript 应用程序中。ACE 被维护为 Cloud9 IDE 的主要编辑器,并且是 Mozilla Skywriter (Bespin) 项目的继承者。

具体来说,这个富文本编辑器具有显示语法突出显示和显示错误/行号等功能。

于 2012-11-26T17:34:39.517 回答