Obsługuję zdarzenie dblclick na przestrzeni w mojej aplikacji internetowej. Efektem ubocznym jest to, że podwójne kliknięcie wybiera tekst na stronie. Jak mogę zapobiec tej selekcji?Zapobieganie zaznaczaniu tekstu po dwukrotnym kliknięciu
Odpowiedz
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
Można również zastosować te style do rozpiętości dla wszystkich przeglądarek innych niż IE i 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+ */
}
albo na Mozilla:
document.body.onselectstart = function() { return false; } // Or any html object
na IE,
document.body.onmousedown = function() { return false; } // valid for any html object as well
Prosta funkcja JavaScript, która powoduje, że c ontent wewnątrz page-elementu Nie można wybrać:
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";
}
}
w prostym javascript:
element.addEventListener('mousedown', function(e){ e.preventDefault(); }, false);
lub jQuery:
jQuery(element).mousedown(function(e){ e.preventDefault(); });
Tak, użyłem tego, aby rozwiązać ten sam problem, który miałem (+1), z wyjątkiem zamiast 'return false' użyłem' event.preventDefault() ', które nie zabija żadnych innych procedur obsługi, które możesz mieć na mousedown. –
To nie działa w IE dla mnie. –
dzięki, bardzo mi to pomogło! – varnie
Aby zapobiec IE 8 CTRL i SHIFT kliknij zaznaczenie tekstu na poszczególnego pierwiastka
var obj = document.createElement("DIV");
obj.onselectstart = function(){
return false;
}
Aby zapobiec zaznaczenie tekstu na dokumencie
window.onload = function(){
document.onselectstart = function(){
return false;
}
}
Aby zablokować możliwość wyboru tylko tekst po podwójnym kliknięciem:
Można użyć MouseEvent#detail
nieruchomości. Dla zdarzeń mousedown lub mouseup jest to 1 plus aktualna liczba kliknięć.
document.addEventListener('mousedown', function (event) {
if (event.detail > 1) {
event.preventDefault();
}
}, false);
Zobacz https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
To jest niesamowite! Działa w przeglądarce Firefox 53. – Zaroth
stary wątek, ale wpadłem na rozwiązanie, które moim zdaniem jest czystsze, ponieważ nie wyłącza każdy nawet związany z przedmiotem, a jedynie zapobiec przypadkowe i niechciane pozycje tekstowe na strona. Jest to proste i działa dobrze dla mnie. Oto przykład; Chcę zapobiec text-wybór, gdy klikam kilka razy na obiekt z klasą „strzałki prawej”:
$(".arrow-right").hover(function(){$('body').css({userSelect: "none"});}, function(){$('body').css({userSelect: "auto"});});
HTH!
Miałem ten sam problem. Rozwiązałem go, przełączając na <a>
i dodając onclick="return false;"
(tak, że kliknięcie go nie doda nowego wpisu do historii przeglądarki).
- 1. Zapobieganie zaznaczaniu tabeli tekstu
- 2. Zapobieganie zaznaczaniu tekstu przy szybkich kliknięciach przycisków
- 3. Wybór tekstu w div (contenteditable) po dwukrotnym kliknięciu
- 4. Jak uniemożliwić zaznaczanie tekstu przy dwukrotnym kliknięciu?
- 5. .exe zamyka się natychmiast po uruchomieniu po dwukrotnym kliknięciu
- 6. MKAnnotationView znika po przesunięciu palcem i dwukrotnym kliknięciu
- 7. RecyclerView pojedyncze kliknięcie nie działa, ale działa po dwukrotnym kliknięciu
- 8. Sposób wstrzymania pliku wsadowego Windows po dwukrotnym kliknięciu?
- 9. Zapobieganie wystrzeliwaniu fokusu po kliknięciu elementu div
- 10. Zapobieganie ponownemu ładowaniu aktywności po kliknięciu SearchView
- 11. jQuery zapobieganie odświeżeniu strony po kliknięciu przycisku
- 12. Zapobieganie kliknięciu przez div
- 13. Android TextView: Zmień kolor tekstu po kliknięciu
- 14. org.apache.xmlbeans.impl.values.XmlValueDisconnectedException po dwukrotnym zapisaniu skoroszytu
- 15. Jak mogę zapobiec zaznaczaniu tekstu w Google Chrome?
- 16. Zapobieganie ekspandowaniu WPF przed rozwinięciem po kliknięciu nagłówka
- 17. Zapobieganie zdarzeniu wstawiania wiersza tabeli po kliknięciu przycisku wewnątrz wiersza
- 18. Zapobieganie animacji po kliknięciu przycisku "Wstecz" na pasku nawigacji?
- 19. Zapobieganie wykonywaniu kodu onblur po kliknięciu przycisku przesyłania
- 20. Zapobieganie podwójnemu wyzwalaniu funkcji po wprowadzeniu fokusu i kliknięciu przycisku
- 21. Zapobieganie kliknięciu podczas przeciągania węzła D3
- 22. Zapobieganie poziomemu "przewijaniu" wprowadzania tekstu?
- 23. Zapobieganie zawijaniu tekstu w rodzicu
- 24. Usuń automatycznie wygenerowany kod Netbeans po dwukrotnym kliknięciu obiektu na karcie projektu
- 25. dlaczego zdarzenie DataGrid MouseDoubleClick jest wywoływane po dwukrotnym kliknięciu paska przewijania?
- 26. Jeditable - podświetlić cały tekst po dwukrotnym kliknięciem
- 27. Zapobieganie kliknięciu wyzwalacza nadrzędnego wyzwalacza potomnego
- 28. Zapobieganie zdarzeniu onClick podczas wybierania tekstu
- 29. Xamarin.Forms: nieprawidłowe wyrównanie tekstu przycisku po kliknięciu (Android)
- 30. Negatywne wcięcie tekstu powoduje duży wybór linku po kliknięciu
Czy istnieje sposób, aby rzeczywiście zapobiec selekcji, a nie usunąć zaznaczenie po fakcie? Także twoje drugie zdanie może znajdować się wewnątrz innego, jeśli jest dla lepszej czytelności. – David
CSS wygląda świetnie! Masz pomysł, czy jest coś podobnego do IE? – David
Przepraszam za bałagan z aparatami ortodontycznymi; Złapałem ten kod z innej strony bez sprawdzania. Naprawiony. Nie ma żadnego odpowiednika IE, obawiam się. –