Ответы:
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
Вы также можете применить эти стили к span для всех браузеров не IE и IE10:
span.no_selection {
user-select: none; /* standard syntax */
-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+ */
}
-ms-user-select: none;
см. Blogs.msdn.com/b/ie/archive/2012/01/11/… @PaoloBergantino
В простом JavaScript:
element.addEventListener('mousedown', function(e){ e.preventDefault(); }, false);
Или с помощью jQuery:
jQuery(element).mousedown(function(e){ e.preventDefault(); });
return false
использованного, event.preventDefault()
который не убивает никаких других обработчиков, которые могут возникнуть в mousedown.
element
, да.
Чтобы предотвратить выделение текста ТОЛЬКО после двойного щелчка:
Вы можете использовать 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);
См. Https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
(event.detail === 2)
чтобы действительно предотвратить ТОЛЬКО двойной щелчок (а не тройной щелчок и т. Д.)
FWIW, я поставил user-select: none
на родительский элемент этих дочерних элементов , которые я не хочу как - то выбирается при двойном щелчке в любом месте родительского элемента. И это работает! Классная вещь contenteditable="true"
, выбор текста и т. Д. Все еще работает на дочерних элементах!
Так вроде:
<div style="user-select: none">
<p>haha</p>
<p>haha</p>
<p>haha</p>
<p>haha</p>
</div>
style="user-select: note"
повсюду разбирала проблему, которую я пытался решить :)
Простая функция 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";
}
}
Для тех, кто ищет решение для Angular 2+ .
Вы можете использовать mousedown
вывод ячейки таблицы.
<td *ngFor="..."
(mousedown)="onMouseDown($event)"
(dblclick) ="onDblClick($event)">
...
</td>
И предотвратить, если 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 ...
}
dblclick
Выход продолжает работать , как ожидалось.
или на Mozilla:
document.body.onselectstart = function() { return false; } // Or any html object
На IE,
document.body.onmousedown = function() { return false; } // valid for any html object as well
document.body
.
Старый поток, но я придумала решение, которое я считаю более чистым, поскольку оно не отключает все, даже привязанные к объекту, а только предотвращает случайный и нежелательный выбор текста на странице. Это просто и хорошо работает для меня. Вот пример; Я хочу запретить выделение текста, если несколько раз щелкнуть объект с классом «стрелка вправо»:
$(".arrow-right").hover(function(){$('body').css({userSelect: "none"});}, function(){$('body').css({userSelect: "auto"});});
HTH!
Если вы пытаетесь полностью запретить выделение текста любым методом, а также только двойным щелчком, вы можете использовать user-select: none
атрибут css. Я тестировал в Chrome 68, но, согласно https://caniuse.com/#search=user-select, он должен работать в других современных браузерах обычных пользователей.
Поведенчески, в Chrome 68 он наследуется дочерними элементами и не позволяет выделять текст, содержащийся в элементе, даже если был выбран текст, окружающий и включающий элемент.
Чтобы запретить IE 8 CTRL и SHIFT, нажмите выделение текста на отдельном элементе.
var obj = document.createElement("DIV");
obj.onselectstart = function(){
return false;
}
Для предотвращения выделения текста в документе
window.onload = function(){
document.onselectstart = function(){
return false;
}
}