2013-05-29 14 views
45

Sto usando javascript per disabilitare la selezione del testo sul mio sito web.javascript: Disable Text Select

il codice è:

<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> 

script simile può essere trovato qui: http://rainbow.arch.scriptmania.com/scripts/no_right_click.html

Sul mio localhost: tutti i browser (Firefox, Chrome, IE e Safari) grande lavoro.

Sul mio sito Live: tutto ok ECCETTO Firefox.

Le mie domande sono:

  1. Qualcuno ha un suggerimento sul perché Firefox comporta in modo diverso per il sito dal vivo e host locale. nota: Javascript è abilitato.

  2. Forse il mio script è troppo semplicistico così ho provato quanto segue con esattamente gli stessi risultati: http://freeware.ke-zo.com/CODES/DisableRC.txt

+4

Lasciate che vi consiglio di evitare l'uso di Javascript per questo Astuccio. Basta usare i CSS, puoi trovare maggiori informazioni sulla selezione del testo in CSS [a questa domanda] (http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting) –

+0

Il secondo la sceneggiatura è probabilmente troppo vecchia. Rimuovere il! Document.all dal momento che ritengo che rompa il supporto fx – mplungjan

+0

onselectstart non è supportato da FF e per una buona ragione –

risposta

131

Basta utilizzare questo metodo 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; 
} 

È possibile trovare la stessa risposta qui: How to disable text selection highlighting using CSS?

+5

Aggiungete anche il link da dove avete trovato questa risposta: http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting#4407335 –

+0

Grazie mille. Il CSS in corpo ha funzionato per tutti i casi tranne IE. C'è una soluzione CSS per risolvere anche questo problema per IE? Ora sto usando la combinazione di Js e CSS per coprire tutti i browser !! tu – arpeggio

+0

1. Perché questo non è stato contrassegnato come soluzione? ... Risolve il problema in questione nel modo più accurato e semplice. 2. Va detto che questa defizione CSS può essere implementata su qualsiasi elemento HTML e non solo BODY. – TheCuBeMan

10

Per JavaScript utilizzare questa funzione:

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

per consentire l'utilizzo di selezione questo:

function reEnable() {return true} 

e utilizzare questa funzione ovunque si desideri:

document.onclick = reEnable 
11

sto scrivendo cursore di controllo ui per fornire funzionalità di trascinamento, questo è il mio modo per impedire al contenuto di selezionare quando l'utente sta trascinando:

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 
} 

bind startDrag sul tuo dom:

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

Se si desidera disabilitare in modo statico il testo selezionare su tutti gli elementi, eseguire il codice quando gli elementi sono caricati:

window.addEventListener('selectstart', function(e){ e.preventDefault(); });