2010-10-10 16 views
11

He intentado aplicar user-select para Opera 10.62 e IE9 sin éxito. No puedo/no vincularé eventos con JavaScript que sean preventDefault(), porque hay tantos lugares que se pueden establecer como no seleccionables y aún necesito retener las selecciones en varios lugares. De hecho, quiero que el comportamiento por defecto para ser seleccionable para todo el documento, y en cuanto a que yo he dado la siguiente en mi hoja de estilo:¿Hay opciones de usuario para Opera 10.62 e IE9?

* { 
    -o-user-select: none; 
    -webkit-user-select: none; 
    -moz-user-select: -moz-none; 
    -khtml-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 

Todo funciona muy bien con Firefox 4, Chrome 7 y Safari 5. Sólo IE9 y Opera 10.62 no funcionan como me gustaría. ¿Algunas ideas?

PD: Me estoy dirigiendo a los navegadores modernos.

+0

Ver: http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting – mahalie

Respuesta

7

¿Intentaste usar ::selection {color:currentColor;background:transparent}?
Para Firefox puede usar ::-moz-selection.

https://developer.mozilla.org/En/CSS/::selection
http://msdn.microsoft.com/en-us/library/ff974109(v=VS.85).aspx
http://reference.sitepoint.com/css/pseudoelement-selection


// // actualización
También existe la propiedad unselectable.

+1

Sí, pero eso es no es realmente bueno porque oculta la selección. Aún puede arrastrar la selección y copiarla. – Tower

+0

revise mi actualización y lea https://developer.mozilla.org/en/CSS/-moz-user-select "Controla la apariencia (solo) de la selección. Esto no tiene ningún efecto en la operación de selección real." – Knu

+1

Una combinación de las propiedades -user-select y unselectable funcionó como un regalo para mí entre navegadores. – ajcw

2

user-select no es una propiedad estándar de CSS3, por lo que no hay usuarios seleccionados o -o-usuario-select o -ms-user-select. Solía ​​estar en la antigua especificación de interfaz de usuario, pero eso fue reemplazado por la especificación básica de interfaz de usuario. Es probable que nunca sea implementado por ninguno de los navegadores, a menos que se agregue nuevamente a la especificación.

La selección del usuario es un comportamiento en lugar de un estilo, por lo que es mejor usar JavaScript. Como Knu menciona arriba, puedes usar no seleccionables en su lugar.

+3

Pero lo que es horrible es que los niños no heredan 'no seleccionable'. Entonces, necesitaría aplicar eso para prácticamente todo, de forma manual. Tengo una aplicación con texto aquí y allá, y de manera predeterminada quiero que todo no se pueda seleccionar. Solo cuando específicamente quiera selecciones, las definiré. Este enfoque no es implementable con 'no seleccionable'. Además, la propiedad funciona si comienza la selección en ese elemento. Ctrl + A, etc. funcionará con 'no seleccionable'. – Tower

+0

En realidad Opera tiene '-o-user-select'. No estoy seguro de qué versión, pero creo que 10.6 la tenía. –

+1

@Tim Down: estoy bastante seguro de que Opera no admite -o-user-select. No aparece en nuestra especificación http://www.opera.com/docs/specs/presto29/css/o-vendor/ y tampoco aparece en Opera Dragonfly. –

4

Se puede utilizar combinación de -webkit-user-select: none;, -moz-user-select: none; y propiedad específica unselectable="on", como he descrito aquí:

How to make text unselectable on HTML page

+0

No funcionará en IE 9 y 8, solo el atributo – dude

0

usando jQuery:

$('.element').mousedown(function(e) { 
    e.preventDefault(); 
}); 

Pero puede que tenga que añadir que, tanto a el elemento y su contenedor.

0

-ms-user-select: none;

parece funcionar bien ahora (IE 10/11)

+0

¡Guau! ¡Pensé que IE11 debía soportar los estándares oficiales sin necesidad de hacks específicos del navegador! Cuando presentaron soporte para esto, ¿por qué no ir directamente al estándar sin el prefijo del navegador? (Y sí, lo probé en IE 11, solo funciona *** con *** el prefijo '-ms-') – awe

Cuestiones relacionadas