如何获得突出显示的文本?

时间:2012-09-25 18:19:31

标签: javascript jquery

我正在尝试从用户那里获取所选文本(用户突出显示的突出显示的文本)。

我有以下内容:

function getSelectedTexts(){
  var t = '';
  if(window.getSelection){
    t = window.getSelection();
    console.log('1');
  }else if(document.getSelection){
    t = document.getSelection();
    console.log('2');
  }else if(document.selection){
      console.log('3');
    t = document.selection.createRange().text;
  }
    return t;
   }


 $('.text_speech').live('click',function(e){
      e.preventDefault();
      var textTest='';

      textTest=getSelectedTexts();
      console.log(textTest);

  })

我的控制台返回

1

>Selection   <------object
 anchorNode: Text
 anchorOffset: 2
 baseNode: Text
 baseOffset: 2
 extentNode: Text
 extentOffset: 1
 focusNode: Text
 focusOffset: 1
 isCollapsed: false
 rangeCount: 1
 type: "Range"
 __proto__: Selection

我不确定如何获取所选文本。任何人都可以帮助我吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

window.getSelection()会返回Selection个对象。

如果您想在不考虑更多情况的情况下获取所选文本,则应执行以下操作:

 window.getSelection().toString()

但如果您的选择可能更复杂,则应阅读MDN documentation

例如,用户可能会选择包含多个标签的文字:

 <div class="text_speech">
   <p>First paragraph</p>
   <p>Second paragraph <strong>big</strong></p>
 </div>

如果用户选择了所有句子&#39; 段落第二段 &#39;那么简单的方法就不会起作用。

答案 1 :(得分:0)

尝试:

console.log(textTest.toString());