我花了一些时间搜索将鼠标坐标映射到文本偏移量(用于拖放),但我遇到的唯一解决方案是将每个字符包装在自己的跨度中,以便您可以监视该跨度上的鼠标事件,这不是一个可扩展的解决方案(对于大型文档)。
但此外,Google Docs 能够在鼠标拖动文本时跟踪鼠标光标(在鼠标所在的文本中绘制插入点)。从监视文本及其周围的 DOM 来看,它似乎没有使用字符跨度技术。有谁知道这是如何实现的?
我花了一些时间搜索将鼠标坐标映射到文本偏移量(用于拖放),但我遇到的唯一解决方案是将每个字符包装在自己的跨度中,以便您可以监视该跨度上的鼠标事件,这不是一个可扩展的解决方案(对于大型文档)。
但此外,Google Docs 能够在鼠标拖动文本时跟踪鼠标光标(在鼠标所在的文本中绘制插入点)。从监视文本及其周围的 DOM 来看,它似乎没有使用字符跨度技术。有谁知道这是如何实现的?
不幸的是,我没有 Google 帐户,因此无法查看 Google 使用什么来完成 Google Docs。但是为了获得选择源,您可能会对这个答案感兴趣。
您还提到了拖放。HTML5 支持一个名为“contenteditable”的属性。浏览器使其(顾名思义)可供用户编辑。这是一个很好的例子。
要了解如何使用 HTML 5 技术编写编辑器(例如 CKEditor 甚至可能是 Google Docs),请阅读http://www.quackit.com/html/codes/contenteditable.cfm。