Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法获得选择/范围的宽度?_Javascript_Html_Dom_Selection - Fatal编程技术网

Javascript 有没有办法获得选择/范围的宽度?

Javascript 有没有办法获得选择/范围的宽度?,javascript,html,dom,selection,Javascript,Html,Dom,Selection,您可以使用getSelection()获取当前选择,使用getRangeAt(0)获取其范围。里面有一堆信息:起始节点、结束节点、字符、位置等 没有的是选择的维度 我可以做的是(我想,我没有尝试过,因为它很复杂),获取所选文本,将其放入包含的元素中,使元素内联并测量其宽度(然后撤消所有操作以避免弄乱DOM)。也许吧 但一定有更简单的方法 它不必在多个元素上进行选择,但应该在多行上进行选择 也许有一个技巧可以制作一个屏幕截图并通过颜色测量像素?你是说页面上的元素选择吗 您可以枚举已选择的元素,获得

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

没有的是选择的维度

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

但一定有更简单的方法

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


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

你是说页面上的元素选择吗

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


然后,找到最大的右边界和下边界,以及最小的左边界和下边界,并找出它们之间的差异。

听起来你在这条轨道上。为什么不创建一个新的div,用所选内容填充它,匹配格式,测量它,然后使它再次消失呢?
range.getClientRects()
!对我就是这个意思@蒂姆当你读了这篇文章后,你觉得它是开着的吗?还是你已经知道那个了?我找不到它…@Rudie:我记得以前回答过一个类似的问题。@TimDown这个问题我该怎么办?显然,这是一个重复,唯一的答案是不够好。我不想让它打开,不回答。如果只有一个元素呢?