我希望将所选文本中的所有文本都添加到页面末尾,这意味着我们在页面上看到的文本。但是,当我尝试这个时,它还会在标签'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;
}
我怎么才能得到页面上显示的文字?
答案 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();
}