【问题标题】:Is there a way to get the width of a Selection/Range? [duplicate]有没有办法获得选择/范围的宽度? [复制]
【发布时间】:2013-05-16 23:01:51
【问题描述】:

您可以使用getSelection() 获取当前的Selection,使用getRangeAt(0) 获取其Range。里面有一堆信息:起始节点、结束节点、字符、位置等。

里面没有的是选择的尺寸。

我能做的(我认为,我没有尝试过,因为它很复杂),是获取选定的文本,将其放入包含元素中,使元素内联并测量其宽度(然后撤消所有这些以不要弄乱 DOM)。也许吧。

但一定有更简单的方法。

它不必在多个元素上进行选择,但它应该在多行上工作。

也许有一个技巧可以制作屏幕截图并按颜色测量像素?

【问题讨论】:

  • 听起来你在正确的轨道上。为什么不创建一个新的 div,只用所选内容填充它,匹配格式,测量它,然后让它再次消失?
  • range.getClientRects()!是的!我正是这个意思! @TimDown 阅读本文后您是否在 SO 上发现了这一点,或者您是否已经知道那个?我找不到它...
  • @Rudie:我记得以前回答过类似的问题。
  • @TimDown 这个问题我该怎么办?显然它是重复的,唯一的答案还不够好。我不想让它打开,无人回答。

标签: javascript html dom selection


【解决方案1】:

您是在谈论页面上的元素选择吗?

您可以枚举您选择的元素,获取每个元素的左、右、上、下边框。

然后,找到最大的右下边界和最小的左下边界,并找出差异。

【讨论】:

  • 如果只有 1 个元素怎么办?
猜你喜欢
  • 1970-01-01
  • 2017-08-22
  • 2011-03-13
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多