sortable disableselection jquery-ui textselection

jquery-ui - sortable - disableselection



¿Por qué está desaprobada la opción.disableSelection()? (4)

.disableSelection en JQueryUI 1.9 está en desuso. La única explicación que puedo encontrar es, literalmente, "Desactivar la selección de texto es malo. No use esto". y "No deberíamos permitir que los desarrolladores se metieran con la selección de texto. Esto fue originalmente para los complementos de interacción, pero todos están manejando la selección de texto propiamente en este punto".

Como no hay una alternativa sugerida, supongo que significan que siempre es mala, pero no puedo comprender sus razones. Una selección de doble / triple clic o de otra manera sin sentido de una aplicación de interfaz de usuario elaborada aplica incorrectamente el efecto de resaltado de texto y (para mí) elimina instantáneamente la ilusión de una experiencia de usuario robusta.

¡Las aplicaciones de escritorio no sufren de esto! Los botones y otros controles en un entorno de escritorio son regiones de píxeles que se ven sólidas y actúan de forma intuitiva, sin importar lo que les haga (o están rotas). El hecho de que las aplicaciones web estén compuestas de complejos cuadros html, fondos, bordes e imágenes (el análogo web de píxeles) no es razón para traicionar la ilusión de que los elementos de pantalla con los que interactuamos no son un objeto físico atómico.

En la imagen a continuación, podría decirse que parte del texto debería ser seleccionable, como los párrafos del texto dentro de los paneles que podrían ser datos de la aplicación. Pero para algunas aplicaciones sería una opción de diseño razonable que otras partes, como el texto en botones, pestañas, encabezados de acordeón y texto detrás de diálogos modales, no sean seleccionables. Esto se aplica especialmente a los tipos de comportamientos arrastrables / clasificables.

1) ¿Estoy malinterpretando su decisión? ¿Es la recomendación más específica de JQuery de lo que creo?

2) Si se entiende como una afirmación general de que el texto siempre debe poder seleccionarse así, proporcione una explicación más completa de por qué.

3) Si fuera a hacerlo de todos modos, ¿cuál es el navegador más eficaz, completo, respetuoso, multiproveedor y universalmente accesible para llevarlo a cabo ahora que disableselection está en desuso?


Como alternativa al user-select: none; CSS user-select: none; técnica, creo que simplemente se evita el comportamiento predeterminado haciendo doble clic y mousedown mediante $(document).on(''dblclick mousedown'', ''.prevent-select'', false); tiene algunas ventajas:

  1. Todavía permite la selección de texto, si el usuario desea arrastrar el cursor alrededor de los elementos. Solo evita la molesta selección de texto cuando el usuario hace clic rápidamente.
  2. Mejor soporte de navegador
  3. No desaprobado por el equipo de jQuery (no hay miradas malvadas en la revisión del código).

No podría estar más de acuerdo con @WesleyMurch, ojalá pudiera darte más + 1s :) También siento que JS no debería ser el camino a seguir, CSS puede ser mejor para esto ...,

Si necesita la selección para alternar (en algunos casos, si es dinámico) puede usar jquery para alternar entre clases, (viejos navegadores IE) puede preguntar ???

Bueno, es una buena manera (herramienta sutil) para desalentar a las personas a seguir usando OLD IE debido a las cosas que se están perdiendo.

http://caniuse.com/#search=user-select

(Aunque IE 8/9 [del número de usuarios en% de perspectiva] es un número grande, pero depende de cuánto le importe realmente)

Usaría la opción de CSS como explica @Shmiddty, pero tal vez, habilitado para comenzar y deshabilitar a medida que avance, pero esa es solo mi opinión :)


Puede usar CSS para lograr esto en la mayoría de los navegadores: http://jsfiddle.net/fQthQ/

* { -ms-user-select: none; /* IE 10+ */ -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; } .selectable { -ms-user-select: auto; -moz-user-select: auto; -khtml-user-select: auto; -webkit-user-select: auto; user-select: auto; }

Opera no admite actualmente esta característica.

Consulte la página de MDN para obtener más información: https://developer.mozilla.org/en-US/docs/CSS/user-select


Un caso del mundo real en el que la selección de texto de desactivación es útil es un elemento <ul> cuyo <li> se ha programado para ser arrastrable (para ordenar). El arrastre funciona correctamente, excepto que el texto se está seleccionando mientras el usuario está arrastrando. Sin duda, este es un uso legítimo para disableSelection ().

Sé que se puede hacer sin este método (de lo contrario, sería imposible que el método lo haga en primer lugar); pero la razón por la que quería usar disableSelection () es para expresar de forma concisa mi deseo en un solo lugar y que jQuery-UI maneje mis problemas de compatibilidad entre navegadores en lugar de tener que usar una combinación de varias reglas CSS y algunas JS (para IE7) .

Creo que esta característica está en desuso debido a que a alguien le molestaron los sitios web que desactivan la selección y decidió que no es una práctica que deberían alentar. Es análogo a un programador web que se niega a admitir navegadores heredados populares porque no desean fomentar su uso. Tal programador sería despedido, pero puede imponer su filosofía a otros cuando tiene poder sobre una biblioteca popular. La depreciación de esta característica tiene el efecto de hacer que los programadores que desean desactivar la selección pierdan su tiempo buscando un método alternativo. Al castigar a los malhechores, es probable que jQuery-UI les haga cambiar sus formas, y nuestra sociedad no se verá inundada de sitios web que deshabiliten la selección. Como ve, hay una racionalización perfectamente buena, y quien escribió "Desactivar la selección de texto es malo. No use esto". en la documentación oficial puede considerarse heroico. Somos los malos aquí.