Używam javascript, aby wyłączyć zaznaczanie tekstu na mojej stronie internetowej.
Kod to:
<script type="text/JavaScript">
function disableselect(e) {
return false
}
function reEnable() {
return true
}
document.onselectstart = new Function ("return false")
if (window.sidebar) {
document.onmousedown = disableselect
document.onclick = reEnable
}
</script>
Podobny skrypt można znaleźć tutaj
Na moim hoście lokalnym: wszystkie przeglądarki (Firefox, Chrome, IE i Safari) działają świetnie.
W mojej witrynie Live: wszystko w porządku Z WYJĄTKIEM Firefoksa.
Moje pytania to:
Czy ktoś ma sugestię, dlaczego Firefox zachowuje się inaczej w przypadku witryny na żywo i lokalnego hosta? Uwaga: Javascript jest włączony.
Może mój skrypt jest zbyt uproszczony, więc próbowałem wykonać następujące czynności z DOKŁADNIE TYMI SAMYMI wynikami
javascript
arpeggio
źródło
źródło
user-select
samo nie zadziała, wymaga przedrostka "-vendor-", tak jak-moz-user-select
i-webkit-user-select
, aby działało , konieczne jest ustawienie wszystkich możliwych odmian nanone
).Odpowiedzi:
Po prostu użyj tej metody CSS:
Możesz znaleźć tę samą odpowiedź tutaj: Jak wyłączyć podświetlanie zaznaczenia tekstu za pomocą CSS?
źródło
Piszę kontrolkę ui suwaka, aby zapewnić funkcję przeciągania, w ten sposób zapobiegam wybieraniu zawartości podczas przeciągania przez użytkownika:
function disableSelect(event) { event.preventDefault(); } function startDrag(event) { window.addEventListener('mouseup', onDragEnd); window.addEventListener('selectstart', disableSelect); // ... my other code } function onDragEnd() { window.removeEventListener('mouseup', onDragEnd); window.removeEventListener('selectstart', disableSelect); // ... my other code }
zwiąż
startDrag
swój dom:<button onmousedown="startDrag">...</button>
Jeśli chcesz statycznie wyłączyć zaznaczanie tekstu we wszystkich elementach, wykonaj kod po załadowaniu elementów:
window.addEventListener('selectstart', function(e){ e.preventDefault(); });
źródło
contenteditable
atrybutem (na przykład, jeśli chcesz wyłączyć zaznaczanie tekstu, gdy rozmiar kontrolki jest zmieniany za pomocą myszy użytkownika).W przypadku JavaScript użyj tej funkcji:
function disableselect(e) {return false} document.onselectstart = new Function (return false) document.onmousedown = disableselect
aby włączyć wybór użyj tego:
function reEnable() {return true}
i użyj tej funkcji w dowolnym miejscu:
document.onclick = reEnable
źródło
new Function (return false)
nie jest prawidłowym kodem javascript. Użyj tylkodocument.onselectstart = disableselect
.document.oncontextmenu = new Function("return false;");
lub to używając CSS:<body onselectstart="return false">
new Function("return false;")
, działałoby, ale jest niepotrzebnie skomplikowane w porównaniu do zwykłego używaniadisableselect
tego, co już masz.onselectstart="return false"
działałoby też, ale nie ma nic wspólnego z CSS. Zauważyłem też, że reszta twojej odpowiedzi też jest błędna -reEnable
funkcja w ogóle nie zadziała.Jeśli masz taką stronę html:
Istnieje prosty sposób na wyłączenie wszystkich zdarzeń:
document.write(document.body.innerHTML)
Masz zawartość HTML i straciłeś inne rzeczy.
źródło
Można też użyć, działa dobrze we wszystkich przeglądarkach, wymaga javascript:
onselectstart = (e) => {e.preventDefault()}
Przykład:
onselectstart = (e) => { e.preventDefault() console.log("nope!") }
Jeszcze jedna alternatywa dla js, testując obsługę CSS i wyłączając
userSelect
lubMozUserSelect
dla przeglądarki Firefox.let FF if (CSS.supports("( -moz-user-select: none )")){FF = 1} else {FF = 0} (FF===1) ? document.body.style.MozUserSelect="none" : document.body.style.userSelect="none"
Czysty CSS, ta sama logika. Ostrzeżenie, będziesz musiał rozszerzyć te reguły na każdą przeglądarkę, może to być rozwlekłe.
@supports (user-select:none) { div { user-select:none } } @supports (-moz-user-select:none) { div { -moz-user-select:none } }
<div>Select me!</div>
źródło
Prosty Skopiuj ten tekst i wstaw poprzedni
</body>
function disableselect(e) { return false } function reEnable() { return true } document.onselectstart = new Function ("return false") if (window.sidebar) { document.onmousedown = disableselect document.onclick = reEnable }
źródło