【发布时间】:2013-05-16 23:01:51
【问题描述】:
您可以使用getSelection() 获取当前的Selection,使用getRangeAt(0) 获取其Range。里面有一堆信息:起始节点、结束节点、字符、位置等。
里面没有的是选择的尺寸。
我能做的(我认为,我没有尝试过,因为它很复杂),是获取选定的文本,将其放入包含元素中,使元素内联并测量其宽度(然后撤消所有这些以不要弄乱 DOM)。也许吧。
但一定有更简单的方法。
它不必在多个元素上进行选择,但它应该在多行上工作。
也许有一个技巧可以制作屏幕截图并按颜色测量像素?
【问题讨论】:
-
听起来你在正确的轨道上。为什么不创建一个新的 div,只用所选内容填充它,匹配格式,测量它,然后让它再次消失?
-
range.getClientRects()!是的!我正是这个意思! @TimDown 阅读本文后您是否在 SO 上发现了这一点,或者您是否已经知道那个?我找不到它... -
@Rudie:我记得以前回答过类似的问题。
-
@TimDown 这个问题我该怎么办?显然它是重复的,唯一的答案还不够好。我不想让它打开,无人回答。
标签: javascript html dom selection