如何从所选文本到页面末尾的文本

时间:2013-12-18 03:07:21

标签: javascript text cursor range selection

我希望将所选文本中的所有文本都添加到页面末尾,这意味着我们在页面上看到的文本。但是,当我尝试这个时,它还会在标签'script','noscript'...以及其他未在页面上显示的标签中找到文本:

function getTextFromCursor(){
    count=0;
    var allText ="";
    if(window.getSelection){
        var selection = window.getSelection();
        var selRange = selection.getRangeAt(0);
        var range = document.createRange();     
        range.setStart(selRange.startContainer, selRange.startOffset);
        var theBody = document.getElementsByTagName('body')[0];
        var lastEl = theBody.lastElementChild;
        range.setEndAfter(lastEl);      
        allText = range.toString();
    }
    return allText;
}  

我怎么才能得到页面上显示的文字?

2 个答案:

答案 0 :(得分:0)

range添加到selection,然后使用selection.toString()

selection.addRange(range);
allText = selection.toString();

答案 1 :(得分:0)

我的Rangy图书馆的TextRange module可以提供帮助。它允许您在用户或多或少地在页面上看到文本时处理文本。有了它,你的例子可以通过

来实现
function getTextFromCursor() {
    var selection = rangy.getSelection();
    var selRange = selection.getRangeAt(0);
    var range = rangy.createRange();
    range.selectNodeContents(document.body);
    range.setStart(selRange.startContainer, selRange.startOffset);
    return range.text();
}