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阻止文本选择: