我需要使用JavaScript计算所选/突出显示文本的宽度
和高度
。
我正在使用由Tim Down编写的以下代码作为起点:
function getSelectionCoords() {
var sel = document.selection, range;
var x = 0, y = 0;
if (sel) {
if (sel.type != "Control") {
range = sel.createRange();
range.collapse(true);
x = range.boundingLeft;
y = range.boundingTop;
}
} else if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0).cloneRange();
if (range.getClientRects) {
range.collapse(true);
var rect = range.getClientRects()[0];
x = rect.left;
y = rect.top;
}
}
}
return { x: x, y: y };
}
左上角的坐标已经正确显示了,为了计算宽度和高度,我还需要右下角的位置。
所以我添加了几行代码来寻找右下角的位置(可在此处查看代码-http://jsfiddle.net/pankajparashar/kv2Bp/)。但令我惊讶的是,尽管它们之间有可见的差异(仅在Firefox中测试),代码始终显示左和右的坐标相同。
顶部和底部的位置没有问题,因为它们工作得很好,这将帮助我计算高度。但是要计算宽度,我仍然需要正确的右坐标。
有人能指出代码中的任何缺陷吗?或者是否有任何其他方法,可以使用该方法计算所选文本的宽度和高度?