6

我在项目中使用 CSS3 对列支持的支持(到目前为止,我发现它比大多数 JavaScript 解决方案更健壮和可靠)。

问题:是否有可能以任何方式获取特定列中的文本?

4

2 回答 2

7

还有……什么,两个月后?我终于找到了这个问题的答案。它依赖于document.caretRangeFromPoint (Webkit) 或 document.caretPositionFromPoint

var getAllTextInColumn = function(rect){
    /*
        rect should be the size and x,y of the column
        { top, left, width, height }
    */

    if(document.caretRangeFromPoint){
        var caretRangeStart = document.caretRangeFromPoint(rect.left, rect.top);
        var caretRangeEnd = document.caretRangeFromPoint(rect.left+rect.width-1, rect.top+rect.height-1);
    } else {
        return null;
    }

    if(caretRangeStart == null || caretRangeEnd == null) return null;

    var range = document.createRange();
    range.setStart(caretRangeStart.startContainer, caretRangeStart.startOffset);
    range.setEnd(caretRangeEnd.endContainer, caretRangeEnd.endOffset);

    return range.toString();
};
于 2013-06-04T05:42:09.050 回答
1

我唯一的猜测是开始用 替换空格SPAN,然后检测该 SPAN 的垂直位置何时变小,然后您就知道您在下一列。最后一个 SPAN 成为列标记。

然后,您可以复制开始/结束和/或列制造商之间的文本。

于 2013-03-18T17:12:52.410 回答