在跨平台的浏览器中获取所选文本

Tim*_*van 12 javascript browser

我想在基于浏览器的应用程序中做的事情之一是允许用户选择一些文本(不是在<textarea>,只是简单的文本!),并让我的应用程序弹出一个小工具栏,然后可以与下一个交互(在我的情况下,添加注释).

我在google上发现了很多东西,似乎专注于编写WYSIWYG编辑器,但这不是我想要的,而且大多数都在IE中工作但在FF2或3中没有.理想情况下,我想要一些可以在IE7中运行的浏览器窗口中返回当前所选文本的功能(如果可能,则返回6),FireFox 2和3以及Safari 2.如果它在Opera中有效,那将是一个奖励,但这不是必需的.

任何人都有这样做的功能?或者从哪里开始的想法?

Gre*_*ein 16

这个jQuery插件很酷但它完成了一项非常具体的任务:用标签包装你突出显示的文本.这可能就是你想要的.但是,如果您不想(或者您处于不可能的情况)向页面添加任何无关的标记,您可以尝试使用以下解决方案:

function getSelectedText() {
  var txt = '';

  if (window.getSelection) {
    txt = window.getSelection();
  }
  else if (document.getSelection) {
    txt = document.getSelection();
  }
  else if (document.selection) {
    txt = document.selection.createRange().text;
  }
  else return; 

  return txt;
}
Run Code Online (Sandbox Code Playgroud)

此函数返回表示文本选择的对象.它可以跨浏览器工作(虽然我怀疑它返回的对象会略有不同,具体取决于浏览器,只能依赖于结果的实际文本而不是任何其他属性).

注意:我最初在这里发现了代码片段:http://www.codetoad.com/javascript_get_selected_text.asp


pal*_*rse 8

看看jQuerywrapSelection插件.这可能就是你要找的东西.