如何防止在 Javascript 中双击选择文本
How to prevent the double-click select text in Javascript
假设我在页面中有一个ul
(li
)列表:
<ul>
<li>xxx<li>
<li>xxx<li>
</ul>
元素li
是可单击和可双击的,它们与这些事件一起附加,我在这两个事件中都return false
。
$('ul li').on('click',function(){
//do what I want
return false;
}).on('dblclick',function(){
//do what I want
return false;
});
但是,当用户双击该元素时,将选择li
中的文本。如何防止这种情况发生?
更新:
现在解决了,我用NiftyDude的css选择器使用以下代码:
$('ul li').on('click',function(){
//do what I want
return false;
}).....on('dragstart',function(){return false;}).on('selectstart',function(){return false;});
您可以使用
css禁用文本选择(请注意,这将有效地禁用所有选择方法,而不仅仅是双击)
ul li {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
http://jsfiddle.net/T3d7v/1/
您无法阻止选择的发生,但您可以在选择完成后立即清除选择:
<script type="text/javascript">
document.ondblclick = function(evt) {
if (window.getSelection)
window.getSelection().removeAllRanges();
else if (document.selection)
document.selection.empty();
}
</script>
为了防止通过"三次单击"选择整个段落,以下是所需的代码:
var _tripleClickTimer = 0;
document.ondblclick = function(evt) {
ClearSelection();
window.clearTimeout(_tripleClickTimer);
//handle triple click selecting whole paragraph
document.onclick = function() {
ClearSelection();
};
_tripleClickTimer = window.setTimeout(function() {
document.onclick = null;
}, 1000);
};
function ClearSelection() {
if (window.getSelection)
window.getSelection().removeAllRanges();
else if (document.selection)
document.selection.empty();
}
源/实时测试。
这应该适用于任何浏览器,请报告任何无法正常工作的浏览器。
相关文章:
- 选择“字符串”并使用SeleniumJava双击
- 使用Javascript双击HTML中的空格时,选择上一个和下一个单词
- 双击已添加的选择选项不起作用
- 如何使用Firefox SDK(用于插件)检测双击选择的文本
- 双击选择框在现代浏览器上是不可能的
- JQuery 双击侦听器在选择 - IE 不起作用
- 在双击/选择单词时在 chrome 扩展程序中运行函数
- 禁用双击选择标签
- 双击而不选择内容
- 如何防止在 Javascript 中双击选择文本
- 按值选择子标记,然后双击
- 在下拉菜单中,选项是在windowphone8.1中双击选择.但我只想在onclick中选择选项
- 双击时禁用文本选择
- 双击jQuery,选择文本并将其复制到剪贴板
- 双击时选择整个字符串
- 双击时从对话框中选择文件时,避免出现mouseup事件
- 在后台双击时停止选择元素
- 双击从(文档)而不是一次关闭选择下拉菜单
- Javascript 为所有选择分配双击
- 选择<李>双击后使用jQuery