Javascript 跨浏览器选择文本的方式

Javascript 跨浏览器选择文本的方式,javascript,jquery,selection,Javascript,Jquery,Selection,我有一个p元素,如何使用跨浏览器的JavaScript选择其中的文本 <p>Some Text to select</p> 一些要选择的文本 我想在单击时选择该文本(如使用鼠标向下移动光标)。它可以是jQuery解决方案。如果您想在一个比jQuery更小的小型库中使用它,那么您可以使用Sizzle引擎(jQuery选择器就是从这个引擎构建的)。缩小后的尺寸仅为4K 如果您想在一个比jQuery小的库中使用它,那么您可以使用Sizzle引擎(jQuery选择器的构建基础

我有一个
p
元素,如何使用跨浏览器的JavaScript选择其中的文本

<p>Some Text to select</p>
一些要选择的文本


我想在单击时选择该文本(如使用鼠标向下移动光标)。它可以是jQuery解决方案。

如果您想在一个比jQuery更小的小型库中使用它,那么您可以使用Sizzle引擎(jQuery选择器就是从这个引擎构建的)。缩小后的尺寸仅为4K


如果您想在一个比jQuery小的库中使用它,那么您可以使用Sizzle引擎(jQuery选择器的构建基础)。缩小后的尺寸仅为4K

或者通过类或id钩住元素。在本例中,我使用了p标记数组,0表示第一个元素


或者通过类或id钩住元素。在本例中,我使用了p标记数组,第一个元素使用0,在@ADNow的帮助下,在注释中,我能够编写选择文本的jQuery插件,我删除了$.browser,因此它适用于jQuery>1.9

$.fn.sel = function() {
    var node = this[0];
    if (document.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(node);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();
        if (selection.setBaseAndExtent) {
            selection.setBaseAndExtent(node, 0, node, 1);
        } else if (document.createRange) {
            var range = document.createRange();
            range.selectNodeContents(node);
            selection.removeAllRanges();
            selection.addRange(range);
        }
    }
};

在@ADNow的帮助下,我可以编写jQuery插件来选择文本,我已经删除了$.browser,因此它可以用于jQuery>1.9

$.fn.sel = function() {
    var node = this[0];
    if (document.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(node);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();
        if (selection.setBaseAndExtent) {
            selection.setBaseAndExtent(node, 0, node, 1);
        } else if (document.createRange) {
            var range = document.createRange();
            range.selectNodeContents(node);
            selection.removeAllRanges();
            selection.addRange(range);
        }
    }
};


你想要的。但我担心“帮助我找到一个库”这类问题在这里显然是离题的。@alvarog.Vicario我不想使用Rangy,它已经缩小了40KB以上。它应该是一些只有几行代码的东西。@PaulS。我想要跨浏览器解决方案。@ChrisDixon我想也许有一个小jquery插件可以做到这一点。我不想要大图书馆,你想要。但我担心“帮助我找到一个库”这类问题在这里显然是离题的。@alvarog.Vicario我不想使用Rangy,它已经缩小了40KB以上。它应该是一些只有几行代码的东西。@PaulS。我想要跨浏览器解决方案。@ChrisDixon我想也许有一个小jquery插件可以做到这一点。我不想要庞大的库。我不想选择元素,但当您想要更改所选文本的样式时,要在Word进程中选择文本。这与您的question@ADNow不,我想选择文本而不是DOM节点。啊,那就完全不同了!问题可能需要稍作修改:)我不想选择元素,但当您想更改所选文本的样式时,会选择Word process中的文本。这与您的question@ADNow不,我想选择文本而不是DOM节点。啊,那就完全不同了!这个问题可能需要稍作修改:)我不想得到想要选择的文本,就像你点击并拖动时那样。对不起,我误解了你的意思。这里有一个关于你在寻找什么的老话题:我不想得到我想要选择的文本,就像你点击拖动时那样。对不起,我误解了你。这里有一个关于你在寻找什么的老话题: