javascript-双击选择整个字符串

javascript-双击选择整个字符串,javascript,html,Javascript,Html,我正在将数据从django后端传递到我的浏览器,该后端可能包含空格{{string},例如这是句子或H3ll0W0!rd。双击时,我希望能够选择整个句子或字符串,以便可以复制 HTML的例子是 <div class="table-responsive"> <table class="table"> <thead> <tr> <th>Book Title<

我正在将数据从django后端传递到我的浏览器,该后端可能包含空格
{{string}
,例如
这是句子
H3ll0W0!rd
。双击时,我希望能够选择整个句子或字符串,以便可以复制

HTML的例子是

<div class="table-responsive">
    <table class="table">
        <thead>
            <tr>
                <th>Book Title</th>
                <th>Book Code</th>
            </tr>
        </thead>
        <tbody>
        {% for b in books %}
            <tr>
                <td>{{ b.title }}</td>
                <td>{{ b.code}}</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
</div>

书名
图书编码
{书籍%%中的b为%1}
{{b.title}}
{{b.code}}
{%endfor%}

您可以使用如下双击侦听器:

HTML:


您可以使用双击侦听器,如下所示:

HTML:


我举了个例子。要定义可选择的文本,只需将其放入
p
标记中即可。看一看:

jQuery:

$(document).ready(function(){

    $('p').dblclick(function(e){

        $(this).selectText();
        // If you want, here you can also copy the text.
        e.preventDefault();

    });

});

jQuery.fn.selectText = function(){
    this.find('input').each(function() {
        if($(this).prev().length == 0 || !$(this).prev().hasClass('p_copy')) { 
            $('<p class="p_copy" style="position: absolute; z-index: -1;"></p>').insertBefore($(this));
        }
        $(this).prev().html($(this).val());
    });
    var doc = document;
    var element = this[0];
    console.log(this, element);
    if (doc.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();        
        var range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};
$(文档).ready(函数(){
$('p').dblclick(函数(e){
$(this.selectText();
//如果您愿意,也可以在这里复制文本。
e、 预防默认值();
});
});
jQuery.fn.selectText=函数(){
this.find('input').each(function(){
如果($(this.prev().length==0 | |!$(this.prev().hasClass('p|u copy')){
$('

”).insertBefore($(this)); } $(this.prev().html($(this.val()); }); var doc=单据; var元素=此[0]; console.log(这个,元素); if(doc.body.createTextRange){ var range=document.body.createTextRange(); range.moveToElementText(元素); range.select(); }else if(window.getSelection){ var selection=window.getSelection(); var range=document.createRange(); 范围。选择节点内容(元素); selection.removeAllRanges(); 选择。添加范围(范围); } };
HTML:

这是一个文本示例另一个
一些文本

x文本
Js小提琴:

这里有一个“如何选择div内容文本”的示例


这是你的问题吗?我举了个例子。要定义可选择的文本,只需将其放入
p
标记中即可。看一看:

jQuery:

$(document).ready(function(){

    $('p').dblclick(function(e){

        $(this).selectText();
        // If you want, here you can also copy the text.
        e.preventDefault();

    });

});

jQuery.fn.selectText = function(){
    this.find('input').each(function() {
        if($(this).prev().length == 0 || !$(this).prev().hasClass('p_copy')) { 
            $('<p class="p_copy" style="position: absolute; z-index: -1;"></p>').insertBefore($(this));
        }
        $(this).prev().html($(this).val());
    });
    var doc = document;
    var element = this[0];
    console.log(this, element);
    if (doc.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();        
        var range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};
$(文档).ready(函数(){
$('p').dblclick(函数(e){
$(this.selectText();
//如果您愿意,也可以在这里复制文本。
e、 预防默认值();
});
});
jQuery.fn.selectText=函数(){
this.find('input').each(function(){
如果($(this.prev().length==0 | |!$(this.prev().hasClass('p|u copy')){
$('

”).insertBefore($(this)); } $(this.prev().html($(this.val()); }); var doc=单据; var元素=此[0]; console.log(这个,元素); if(doc.body.createTextRange){ var range=document.body.createTextRange(); range.moveToElementText(元素); range.select(); }else if(window.getSelection){ var selection=window.getSelection(); var range=document.createRange(); 范围。选择节点内容(元素); selection.removeAllRanges(); 选择。添加范围(范围); } };
HTML:

这是一个文本示例另一个
一些文本

x文本
Js小提琴:

这里有一个“如何选择div内容文本”的示例


这是你的问题吗?

你怎么知道什么时候开始或结束?您提供了两个非常不同的示例。你在使用框架吗?我们可以假设页面中的文本被包装在它自己的元素中吗?你如何知道何时开始或结束它?您提供了两个非常不同的示例。你在使用框架吗?我们可以假设页面中的文本被包装在它自己的元素中吗?再读一遍,问题是关于文本突出显示。哈哈,这非常准确。如您所见,它只适用于只有文本的元素。我还会调用
event.preventDefault
,以确保浏览器不会在之后自动取消选择它,但如果没有它,它似乎可以正常工作。非常正确,浏览器似乎可以处理它,但最好是安全的,而不是抱歉。我已经编辑了我的答案,谢谢:)再读一遍,这个问题是关于文本突出显示的。哈哈,差不多就是这样。如您所见,它只适用于只有文本的元素。我还会调用
event.preventDefault
,以确保浏览器不会在之后自动取消选择它,但如果没有它,它似乎可以正常工作。非常正确,浏览器似乎可以处理它,但最好是安全的,而不是抱歉。我已经编辑了我的答案,谢谢:)
$(document).ready(function(){

    $('p').dblclick(function(e){

        $(this).selectText();
        // If you want, here you can also copy the text.
        e.preventDefault();

    });

});

jQuery.fn.selectText = function(){
    this.find('input').each(function() {
        if($(this).prev().length == 0 || !$(this).prev().hasClass('p_copy')) { 
            $('<p class="p_copy" style="position: absolute; z-index: -1;"></p>').insertBefore($(this));
        }
        $(this).prev().html($(this).val());
    });
    var doc = document;
    var element = this[0];
    console.log(this, element);
    if (doc.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();        
        var range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};
This is a text <p>example another one</p> bla bla bla bla <br>
Some <p>text text text</p> x x x text