2013-05-29 16 views
45

Używam javascript do wyłączania zaznaczania tekstu na mojej stronie.javascript: Wyłącz tekst Wybierz

kod jest:

<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: http://rainbow.arch.scriptmania.com/scripts/no_right_click.html

Na moim localhost: wszystkich przeglądarkach (Firefox, Chrome, IE i Safari) działają świetnie.

Na mojej stronie na żywo: wszystko w porządku Z WYJĄTKIEM przeglądarki Firefox.

Moje pytania są następujące:

  1. Czy ktoś ma sugestię, dlaczego Firefox zachowuje się inaczej na miejscu na żywo i lokalnym komputerze. Uwaga: Javascript jest włączony.

  2. Może mój skrypt jest zbyt uproszczone, więc próbowałem następujące z dokładnie takie same wyniki: http://freeware.ke-zo.com/CODES/DisableRC.txt

+4

Pozwól proponujemy, aby uniknąć wykorzystania JavaScript do tego walizka. Po prostu użyj CSS, możesz znaleźć więcej informacji na temat zaznaczania tekstu w CSS [w tym pytaniu] (http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting) –

+0

Drugi skrypt jest prawdopodobnie zbyt stary. Usuń! Document.all, ponieważ uważam, że łamie obsługę fx – mplungjan

+0

onselectstart nie jest obsługiwany przez FF i nie bez powodu –

Odpowiedz

131

Wystarczy użyć tej metody CSS:

body{ 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 

można znaleźć tę samą odpowiedź tutaj: How to disable text selection highlighting using CSS?

+5

Dodaj również link z miejsca, w którym znalazłeś tę odpowiedź: http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting#4407335 –

+0

Dziękuję bardzo. CSS w treści pracował dla wszystkich przypadków z wyjątkiem IE. Czy istnieje niezłe rozwiązanie CSS, aby rozwiązać ten problem w IE? Używam teraz kombinacji Js i CSS, aby objąć wszystkie przeglądarki !! thk u. – arpeggio

+0

1. Dlaczego ta opcja nie została oznaczona jako rozwiązanie? ... Rozwiązuje daną sprawę w najbardziej dokładny i prosty sposób. 2. Należy wspomnieć, że tę defekt CSS można wdrożyć na dowolnym elemencie HTML, a nie tylko BODY. – TheCuBeMan

10

Do obsługi JavaScriptu użyj tej funkcji:

function disableselect(e) {return false} 
document.onselectstart = new Function (return false) 
document.onmousedown = disableselect 

aby umożliwić korzystanie wyboru to:

function reEnable() {return true} 

i używać tej funkcji gdziekolwiek chcesz:

document.onclick = reEnable 
11

Piszę suwak ui zapewnienie funkcji przeciągania, to moja droga aby uniemożliwić wybór treści podczas przeciągania:

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 
} 

wiązanie startDrag na DOM:

<button onmousedown="startDrag">...</button> 

Jeśli chcesz statycznie wyłączyć tekst wybrać na wszystkich elementów, wykonanie kodu, gdy elementy są ładowane:

window.addEventListener('selectstart', function(e){ e.preventDefault(); }); 
Powiązane problemy