如何将文本突出显示从Javascript编码到API
我正在开发一个应用程序,使用户能够在文本文章上进行协作(通常通过突出显示/注意文本的特定跨度) 我将有一个API,它以某种形式提供文档(它们现在是.doc格式的,但我希望以降价之类的方式提供它们)。我可以放心地假设文章的内容不会改变 我现在被这些亮点的编码格式所困扰。问题是这些文章有一些格式(例如,作者引用另一篇外部文章的块引号,以及典型的换行符和段落间距),因此客户端对格式的解释与服务器不同 例如,Markdown使用如何将文本突出显示从Javascript编码到API,javascript,text,highlight,encode,Javascript,Text,Highlight,Encode,我正在开发一个应用程序,使用户能够在文本文章上进行协作(通常通过突出显示/注意文本的特定跨度) 我将有一个API,它以某种形式提供文档(它们现在是.doc格式的,但我希望以降价之类的方式提供它们)。我可以放心地假设文章的内容不会改变 我现在被这些亮点的编码格式所困扰。问题是这些文章有一些格式(例如,作者引用另一篇外部文章的块引号,以及典型的换行符和段落间距),因此客户端对格式的解释与服务器不同 例如,Markdown使用字符表示块引号中的内容,而HTML使用——因此在这种情况下,当用户突出显示中
字符表示块引号中的内容,而HTML使用
——因此在这种情况下,当用户突出显示
中的文本时,我的Javascript代码需要进行一些混乱的计算以获得正确的字符偏移量
最后,我希望始终在服务器上处理角色偏移,如下所示:
// e.g.
// from the 55th character to the 58th character
// offset = [55, 3]
我简要考虑了其他几种方法:
- 用HTML将文章发送到客户端,尽管这会产生同样的问题,因为我需要向HTML标记中添加CSS类等
- 以字符串数组的形式发送文章内容(在文章中的每一行分隔符上拆分),并为每个项目指定一个类型(例如,“普通”或“blockquote”)——尽管这似乎是解决此问题的简单方法
编辑:为了更清晰-这将是一个客户端应用程序(需要现代浏览器)。这是一个具有挑战性的问题;没有一个简单的答案。您需要想出一些易于使用的不变量,理想情况下允许您使用不同的格式化标记语言。我建议将偏移量存储到文档文本中(忽略标记)。当然,从编辑器中获取文本偏移量可能并不容易。如果您在浏览器中工作,我认为内容将是HTML,并且您将从浏览器的选择对象获得偏移量,这不会提供理想情况下所需的文本偏移量。不过,您可以使用一些奇特的XPath计算它。即使这样做,如果将文档转换为另一种格式,也可能会出现问题,因为可能会转换或删除换行符 所以我认为答案是:不,没有灵丹妙药,你走在正确的轨道上