Javascript 有没有办法获得选择/范围的宽度?
您可以使用Javascript 有没有办法获得选择/范围的宽度?,javascript,html,dom,selection,Javascript,Html,Dom,Selection,您可以使用getSelection()获取当前选择,使用getRangeAt(0)获取其范围。里面有一堆信息:起始节点、结束节点、字符、位置等 没有的是选择的维度 我可以做的是(我想,我没有尝试过,因为它很复杂),获取所选文本,将其放入包含的元素中,使元素内联并测量其宽度(然后撤消所有操作以避免弄乱DOM)。也许吧 但一定有更简单的方法 它不必在多个元素上进行选择,但应该在多行上进行选择 也许有一个技巧可以制作一个屏幕截图并通过颜色测量像素?你是说页面上的元素选择吗 您可以枚举已选择的元素,获得
getSelection()
获取当前选择
,使用getRangeAt(0)
获取其范围
。里面有一堆信息:起始节点、结束节点、字符、位置等
没有的是选择的维度
我可以做的是(我想,我没有尝试过,因为它很复杂),获取所选文本,将其放入包含的元素中,使元素内联并测量其宽度(然后撤消所有操作以避免弄乱DOM)。也许吧
但一定有更简单的方法
它不必在多个元素上进行选择,但应该在多行上进行选择
也许有一个技巧可以制作一个屏幕截图并通过颜色测量像素?你是说页面上的元素选择吗 您可以枚举已选择的元素,获得每个元素的左、右、上和下边框
然后,找到最大的右边界和下边界,以及最小的左边界和下边界,并找出它们之间的差异。听起来你在这条轨道上。为什么不创建一个新的div,用所选内容填充它,匹配格式,测量它,然后使它再次消失呢?
range.getClientRects()
!对我就是这个意思@蒂姆当你读了这篇文章后,你觉得它是开着的吗?还是你已经知道那个了?我找不到它…@Rudie:我记得以前回答过一个类似的问题。@TimDown这个问题我该怎么办?显然,这是一个重复,唯一的答案是不够好。我不想让它打开,不回答。如果只有一个元素呢?