41 votes

Pourquoi est .disableSelection() obsolète?

.disableSelection dans JQueryUI 1.9 est obsolète. La seule explication que je trouve, c'est, littéralement, "Désactiver la sélection de texte est mauvais. Ne pas l'utiliser." et "Nous ne devrions pas permettre aux développeurs de jouer avec la sélection de texte. C'était à l'origine de l'interaction des plugins, mais ils sont tous de la manipulation de la sélection de texte correctement sur leurs propres à ce point."

Puisqu'il n'y a pas d'alternative à l'heure, je suppose qu'ils signifient qu'il est toujours mauvais, mais je ne peux pas comprendre leurs raisons. Un double/triple-cliquez sur ou autrement pas de sens de la sélection d'un complexe-application d'INTERFACE utilisateur mal s'applique le texte-mettre en évidence l'effet et (pour moi) élimine instantanément l'illusion d'une solide expérience de l'utilisateur.

Les applications de bureau ne souffrent pas de ce! Boutons et autres contrôles dans un environnement de Bureau sont des régions de pixels look massif et à agir de manière intuitive peu importe ce que vous faites pour eux (ou alors ils sont cassés). Le fait que les applications web sont composés de complexes html boîtes, des arrière-plans, des bordures et des images (le web-analogique de pixels) n'est pas une raison pour trahir l'illusion que les éléments de l'écran d'interagir avec n'est pas atomique, physique de l'objet.

Dans l'image ci-dessous, sans doute un peu le texte doit être sélectionné, telles que les paragraphes de texte à l'intérieur des panneaux qui pourraient être données de l'application. Mais pour certaines applications, il serait raisonnable de choix de conception que d'autres parties, telles que le texte dans les boutons, les onglets, accordéon, en-têtes, et le texte derrière des boîtes de dialogue modales ne serait pas sélectionnable. Ceci s'applique en particulier à déplaçable/sortable types de comportements.

jQuery UI Themeroller, with a region selected

1) Suis-je une interprétation erronée de leur décision? La recommandation est de plus spécifiques à JQuery que je sache?

2) Si c'est fait comme une déclaration générale que le texte doit toujours être sélectionné comme cela, veuillez fournir une explication plus complète de la raison.

3) Si je devais le faire de toute façon, ce qui est le plus performant, complet, respectueux de la croix-navigateur, et universellement accessibles à aller à ce sujet maintenant que disableSelection est obsolète?

29voto

Shmiddty Points 8538

Vous pouvez utiliser les CSS pour ce faire dans la plupart des navigateurs: 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;
}

L'opéra ne prend actuellement pas en charge cette fonctionnalité.

Voir le MDN page pour plus d'info: https://developer.mozilla.org/en-US/docs/CSS/user-select

5voto

user2407309 Points 120

Dans le monde réel de cas dans lequel la désactivation de la sélection de texte est utile, est une <ul> dont <li> ont été programmés pour être déplaçable (pour tri). Le glissement fonctionne correctement sauf que le texte est être sélectionné lorsque l'utilisateur est en le faisant glisser. C'est sûrement une utilisation légitime de disableSelection().

Je sais que cela peut être fait sans cette méthode (sinon, il serait impossible de la méthode pour le faire en premier lieu), mais la raison pour laquelle j'ai voulu utiliser disableSelection() est de manière concise exprimer mon désir en un seul endroit et ont jQuery poignée de ma croix-des problèmes de compatibilité navigateur plutôt que d'avoir à utiliser une combinaison de plusieurs règles CSS et certains JS (pour IE7).

0voto

Jordan Rieger Points 628

Comme une alternative à la CSS, user-select: none; technique, je pense que le simple fait de prévenir le comportement par défaut en double-cliquer et mousedown via $(document).on('dblclick mousedown', '.prevent-select', false); a certains avantages:

  1. Encore permet la sélection de texte, l'utilisateur doit faire glisser le curseur autour de la éléments. Empêche ennuyeux de la sélection de texte lorsque l'utilisateur est rapidement en cliquant sur.
  2. Une meilleure prise en charge du navigateur.
  3. Pas désapprouvée par jQuery équipe (pas mal les reflets dans la revue de code.)

0voto

Val Points 7050

Je ne pouvais pas être plus d'accord avec @WesleyMurch, souhaite que je pourrais vous donner plus de +1s :) j'ai aussi l'impression que, JS ne devrait pas être la voie à suivre, css peut-être mieux pour ce...,

Si vous avez besoin de la sélection à bascule (dans certains cas, si dynamique), vous pouvez utiliser jquery pour basculer entre les classes, les (vieux navigateurs IE) vous pouvez demander???

Eh bien, c'est un bon moyen subtils (outil) pour décourager les gens à garder à l'aide de VIEUX I. E. des choses qu'ils manquent à l'appel.

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

(Bien que IE 8/9 [du nombre d'utilisateurs en % point de vue] est un grand nombre, mais ça dépend de combien vous vous souciez vraiment)

Je voudrais utiliser le CSS comme @Shmiddty explique mais peut-être, permis de commencer avec et désactiver comme vous allez le long, mais c'est juste mon avis :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X