【问题标题】:Highlighting strings in different colors in a textarea在文本区域中以不同颜色突出显示字符串
【发布时间】:2012-04-01 22:33:09
【问题描述】:

我正在努力制作一个可供多人编辑的文本区域 - 使用 mobwrite。 mobwrite 在其工作中使用 diff-match-patch。它可以很好地在不同人之间同步文本区域。现在,我想要用不同颜色突出显示来自不同用户的补丁。

为此,我将不得不以某种方式为文本区域中的“文本范围”着色? (当然不用直接编辑 textarea 本身!)

我已经阅读了两个语法高亮工具 - codemirror 和 editarea。它们具有用于获取“文本范围”的开始和结束的有用功能。但是,如果不加载很多不必要的 javascript 代码,我找不到一种方法来为这个选择范围着色。

请建议我如何实现“为文本区域中的一系列文本着色”。谢谢。

【问题讨论】:

标签: javascript textarea highlight textrange colorize


【解决方案1】:

我知道的一种方法是将 textarea 的不透明度设置为 0 并在其后面放置一个 div 。它必须具有相同的宽度/高度/位置/文本大小/等。然后你只需要将所有输入从 textarea 发送到 div。完成后,您将能够在页面上放置按钮以启动 javascript 函数,该函数检索选定的文本范围,然后基于此更改 div。

这样做的一个问题是用户不会看到他们的文本被突出显示,因此需要对其进行模拟。


这应该让你开始:

<textarea onKeyDown="document.getElementById('ta_disp').innerHTML = this.value;" style="z-index: 100; position: absolute; left: 0; top: 0; width: 300px; height: 100px; opacity: 0;-moz-opacity: 0;filter: alpha(opacity=0); outline: 1px solid #f00;"></textarea>
<div id="ta_disp" style="z-index: 99; position: absolute; left: 0; top: 0; width: 300px; height: 100px; outline: 1px solid #f00;"></div>

【讨论】:

  • 为什么不这样做是,innerHTML 可以包含不会正确显示在 div 上的空白字符(换行符、制表符等)。此外,使 textarea opacity:0 不显示闪烁的文本光标。
猜你喜欢
  • 2019-04-19
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2020-05-25
相关资源
最近更新 更多