代码之家  ›  专栏  ›  技术社区  ›  irva91

将突出显示的文本保存到字符串

  •  2
  • irva91  · 技术社区  · 12 年前

    我正在制作一个网络应用程序,它将屏幕分为两个窗口,一侧是基于网络的文本编辑器,另一侧只是一个普通窗口。 我正试图找到一种方法,让用户在浏览器端突出显示一些文本,然后将突出显示的文本自动保存到字符串中,然后我就可以在其中操作字符串了。

    有人有什么想法吗?如有任何帮助,我们将不胜感激。

    2 回复  |  直到 12 年前
        1
  •  5
  •   Peter Wilson    7 年前

            function getSelectionText() {
                var text = "";
                if (window.getSelection) {
                    text = window.getSelection().toString();
                } else if (document.selection && document.selection.type != "Control") {
                    text = document.selection.createRange().text;
                }
                return text;
            }
            $(document).ready(function (){
               $('div').mouseup(function (e){
                   alert(getSelectionText())
               })
            });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div>
            Hello, this is a highlight text test
        </div>
        2
  •  2
  •   mcanfield    12 年前

    所以你有两个步骤。

    1. 捕获mouse-up事件。
    2. 返回选定的文本。

    无论在文档上选择了什么文本,都可以通过js调用进行访问:

    window.getSelection()
    

    但这是特定于浏览器的。因此,您可以使用此代码片段来覆盖从所有浏览器中抓取选定的文本。

    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;
        }
        return txt;
    }
    

    我假设您使用的是像jQuery这样的库。这样可以帮助处理mouseup事件。您可能不想在整个文档中捕获所选内容。所以你可以绑定到你需要的任何元素。这里有点像我的小提琴: http://jsfiddle.net/xh799/