Dav*_*vid 275 javascript selection-object
我在我的网络应用程序中处理跨度上的dblclick事件.副作用是双击选择页面上的文本.如何防止此选择发生?
Pao*_*ino 332
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以将这些样式应用于所有非IE浏览器和IE10的范围:
span.no_selection {
-webkit-user-select: none; /* webkit (safari, chrome) browsers */
-moz-user-select: none; /* mozilla browsers */
-khtml-user-select: none; /* webkit (konqueror) browsers */
-ms-user-select: none; /* IE10+ */
}
Run Code Online (Sandbox Code Playgroud)
小智 109
在普通的JavaScript中:
element.addEventListener('mousedown', function(e){ e.preventDefault(); }, false);
Run Code Online (Sandbox Code Playgroud)
或者使用jQuery:
jQuery(element).mousedown(function(e){ e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)
4es*_*n0k 57
仅在双击后阻止文本选择:
你可以使用MouseEvent#detail财产.对于mousedown或mouseup事件,它是1加上当前的点击次数.
document.addEventListener('mousedown', function (event) {
if (event.detail > 1) {
event.preventDefault();
// of course, you still do not know what you prevent here...
// You could also check event.ctrlKey/event.shiftKey/event.altKey
// to not prevent something useful.
}
}, false);
Run Code Online (Sandbox Code Playgroud)
请参阅https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
kyw*_*kyw 23
FWIW,我将那些子元素user-select: none的父元素设置为在双击父元素的任何位置时都不希望以某种方式选择的子元素。而且有效!很酷的是contenteditable="true",文本选择等仍然可以在子元素上使用!
像这样:
<div style="user-select: none">
<p>haha</p>
<p>haha</p>
<p>haha</p>
<p>haha</p>
</div>
Run Code Online (Sandbox Code Playgroud)
小智 11
一个简单的Javascript函数,它使页面元素内的内容不可选:
function makeUnselectable(elem) {
if (typeof(elem) == 'string')
elem = document.getElementById(elem);
if (elem) {
elem.onselectstart = function() { return false; };
elem.style.MozUserSelect = "none";
elem.style.KhtmlUserSelect = "none";
elem.unselectable = "on";
}
}
Run Code Online (Sandbox Code Playgroud)
对于那些正在寻找Angular 2+解决方案的人。
您可以使用mousedown表格单元格的输出。
<td *ngFor="..."
(mousedown)="onMouseDown($event)"
(dblclick) ="onDblClick($event)">
...
</td>
Run Code Online (Sandbox Code Playgroud)
并防止如果detail > 1.
public onMouseDown(mouseEvent: MouseEvent) {
// prevent text selection for dbl clicks.
if (mouseEvent.detail > 1) mouseEvent.preventDefault();
}
public onDblClick(mouseEvent: MouseEvent) {
// todo: do what you really want to do ...
}
Run Code Online (Sandbox Code Playgroud)
该dblclick产量继续按预期方式工作。