Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-防止在三次单击时选择全文,并使所选内容仅为单个单词_Javascript_Jquery_Double_Double Click_Textselection - Fatal编程技术网

Javascript-防止在三次单击时选择全文,并使所选内容仅为单个单词

Javascript-防止在三次单击时选择全文,并使所选内容仅为单个单词,javascript,jquery,double,double-click,textselection,Javascript,Jquery,Double,Double Click,Textselection,当我们双击单个单词,然后浏览器选择该单词,当我们三次单击单个单词,然后浏览器选择整个单行或整个段落 在这里,我想防止在三次单击时选择所有单词,并更改为仅选择单个单词 我用这个密码试过了 function clearSelection() { if(document.selection && document.selection.empty) { document.selection.empty(); } else if(window.getSele

当我们双击单个单词,然后浏览器选择该单词,当我们三次单击单个单词,然后浏览器选择整个单行或整个段落

在这里,我想防止在三次单击时选择所有单词,并更改为仅选择单个单词

我用这个密码试过了

function clearSelection() {
    if(document.selection && document.selection.empty) {
        document.selection.empty();
    } else if(window.getSelection) {
        var sel = window.getSelection();
        sel.removeAllRanges();
    }
}
这对你有用吗

我编辑你的小提琴

document.querySelector('div').addEventListener('click', function (evt) {
    var o = this,
        ot = this.textContent;
    if (evt.detail >= 3) {
        clearSelection();
    }
});

function clearSelection() {
    if(document.selection && document.selection.empty) {
        document.selection.empty();
    } else if(window.getSelection) {
        var sel = window.getSelection();
        sel.removeAllRanges();
    }
}
这是我的叉子:

它在第二次单击时捕获所选单词并保存偏移量。第三次单击时,它将清除选择并使用先前保存的偏移创建一个新的选择

var throttle = false;
var sel = window.getSelection();
var selStart = 0;
var selEnd = 0;

document.querySelector('div').addEventListener('click', function (evt) {    
    if (!throttle && evt.detail === 2) {
      selStart = sel.anchorOffset;
      selEnd = sel.focusOffset;
    }

    if (!throttle && evt.detail === 3) {
    var node = this.firstChild;
    sel.removeAllRanges();
    throttle = true;

    var range = document.createRange();
    range.setStart(node, selStart);
    range.setEnd(node, selEnd)

    sel.removeAllRanges();
    sel.addRange(range);
  }
});

什么时候调用
clearSelection()
呢?如果有任何选中的文本,它将清除@uncoderI,我不确定我是否理解。您可以发布完整的JavaScript代码,或者为其创建JSFIDLE页面吗@uncoderI无法使
evt.detail
获得值3。无论我如何单击,它总是以值0触发,可能是因为您只订阅了
'click'
事件。您的最佳选择可能是查看
jQuery.dblclick()
事件,或者,通常通过CSS阻止文本选择: