2010-09-23 34 views
188

Duplicar posible:
CSS rule to disable text selection highlighting¿Cómo desactivo la selección de texto con CSS o JavaScript?

estoy haciendo un/CSS/Galería jQuery HTML, con varias páginas.

De hecho, tengo un botón "siguiente", que es un enlace simple con un oyente clic de jQuery.

El problema es que si el usuario hace clic en el botón varias veces, se selecciona el texto del botón y luego la línea de texto completa. En mi diseño realmente oscuro, eso es realmente feo y sin sentido.

Así que aquí está mi pregunta: ¿Se puede deshabilitar la selección de texto en HTML? Si no es así, me quedo extraño terriblemente a flash y su alto nivel de configuración en campos de texto ...

Respuesta

255
<div 
style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none;" 
unselectable="on" 
onselectstart="return false;" 
onmousedown="return false;"> 
    Blabla 
</div> 
+0

Todavía no funciona en safari y cromo. Guardo esa solución, pero también implemento una solución para el resto: en cada clic, reemplace el html del enlace por el html del enlace. el texto se actualiza y la selección se desactiva después de medio segundo. – daviddarx

+1

El CSS para webkit es similar al de Firefox, edité la respuesta para agregarlo. – Jerome

+1

@daviddarx Funciona en Chrome 17 y Safari 5. – mhenry1384

4

No estoy seguro de si se puede apagarlo, pero usted puede cambiar los colores de ella :)

myDiv::selection, 
myDiv::-moz-selection, 
myDiv::-webkit-selection { 
    background:#000; 
    color:#fff; 
} 

a continuación, sólo que coincida con los colores de su diseño "negrito" y ver lo que sucede :)

+1

Puede comprimir esto en una regla de CSS. myDiv.webkit :: - webkit-selection, myDiv.moz :: - moz-selection, myDiv.normal :: selection { background: # 000; color: #fff; } – Yahel

+0

@yc: use un selector múltiple, lo editaré, gracias :) – Kyle

+0

#galleryPagesNavigation a.normal :: selection { \t \t background: # 000; \t} a.moz \t #galleryPagesNavigation :: - moz-selección { \t \t fondo: # 000; \t} \t a.webkit #galleryPagesNavigation :: - webkit-selección { \t fondo: # 000; \t} – daviddarx

7

puede usar JavaScript para hacer lo que quiera:


if (document.addEventListener !== undefined) { 
    // Not IE 
    document.addEventListener('click', checkSelection, false); 
} else { 
    // IE 
    document.attachEvent('onclick', checkSelection); 
} 

function checkSelection() { 
    var sel = {}; 
    if (window.getSelection) { 
     // Mozilla 
     sel = window.getSelection(); 
    } else if (document.selection) { 
     // IE 
     sel = document.selection.createRange(); 
    } 

    // Mozilla 
    if (sel.rangeCount) { 
     sel.removeAllRanges(); 
     return; 
    } 

    // IE 
    if (sel.text > '') { 
     document.selection.empty(); 
     return; 
    } 
} 

Caja de jabón: Realmente no debería estar jodiendo con el agente de usuario del cliente de esta manera. Si el cliente desea seleccionar elementos en el documento, entonces debería poder seleccionar elementos en el documento. No importa si no le gusta el color de resaltado, porque usted no es el que mira el documento.

+22

** Refugio de caja de jabón **: Tengo un botón que, cuando hace clic, ejecuta algunos javascript para cambiar la escala de una imagen. No hay ninguna razón para que el usuario seleccione "+" o "-" dentro de ese botón, pero la mayoría de los navegadores web terminarán con el texto seleccionado después de unos pocos clics de botón. Del mismo modo, si está haciendo drag-and-drop a través de javascript, no desea seleccionar las cosas sobre las que arrastra algo. Dicho esto, agradezco el hecho de que aún haya respondido la pregunta aunque no esté de acuerdo con el objetivo. – Robert

+2

Reconozco que hay circunstancias en las que puede ser una opción de diseño válida. Pero la pregunta mencionó que echaría de menos a Flash con la implicación de que echaría de menos poder controlar al cliente del usuario. No estoy de acuerdo con ese modo de pensar. Como usuario, no me gusta que el sitio redefina cómo funciona mi software local. También es un problema de accesibilidad. –

+1

@jsumners Hay _plentas_ circunstancias. Haga un poco de pensamiento listo y encontrará múltiples escenarios. El hecho de que los navegadores lo permitan de manera predeterminada no significa que nosotros, como programadores, debamos conformarnos. Además, la informática móvil está eliminando los medios tradicionales de selección de texto. Por lo tanto, se está volviendo cada vez más relevante. Haces que suene como si fuera una especie de truco obsoleto o algo así, es una función soportada__ (ver respuestas arriba.) –

25

Pruebe este código CSS para compatibilidad entre navegadores.

-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-o-user-select: none; 
user-select: none; 
207

actualización de enero de 2017:

Según Can I use, la user-select está soportado actualmente en todos los navegadores excepto Internet   Explorer 9 y versiones anteriores (pero lamentablemente todavía necesita un prefijo de proveedor).


todas las variaciones CSS correctos son:

.noselect { 
 
    -webkit-touch-callout: none; /* iOS Safari */ 
 
    -webkit-user-select: none; /* Safari */ 
 
    -khtml-user-select: none; /* Konqueror HTML */ 
 
     -moz-user-select: none; /* Firefox */ 
 
     -ms-user-select: none; /* Internet Explorer/Edge */ 
 
      user-select: none; /* Non-prefixed version, currently 
 
            supported by Chrome and Opera */ 
 
}
<p> 
 
    Selectable text. 
 
</p> 
 
<p class="noselect"> 
 
    Unselectable text. 
 
</p>


Nota que es un no estándar característica (es decir, no una parte de cualquier especificación) . No se garantiza que funcione en todas partes, y puede haber diferencias en la implementación entre navegadores y en el futuro los navegadores pueden dejar de brindar soporte.


Más información se puede encontrar en Mozilla Developer Network documentation.

+8

"corregir las variaciones de CSS" ...? La única "variación" de CSS correcta es 'user-select '. – BoltClock

+14

está bien así que los demás son prefijos específicos del proveedor, supongo que cualquier otra persona clasificaría esas son las variaciones correctas. – Blowsie

+3

Ja ja, ¿Está planeando ganar todos sus representantes con la misma respuesta? NICE :) – Starx

Cuestiones relacionadas