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 mal, mais je ne peut 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.
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 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.
1) Suis-je une interprétation erronée de leur décision? La recommandation est de plus spécifiques à JQuery que je sache?
2) S'il est fait comme une déclaration générale que le texte devrait 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?
- Je ne suis pas d'accord avec l'hypothèse d'un double/triple cliquez sur sélectionner n'est pas ce que les utilisateurs veulent. En fait, j'ai presque toujours choisir de cette façon! En outre, vous pouvez empêcher les utilisateurs de sélectionner des éléments de l'INTERFACE qui ne devraient pas être sélectionnables. Voir la
user-select
de la propriété. - Je suis d'accord que c'est parfois le but de l'action, mais comme le concepteur de l'application, je sens que je devrais être en mesure de refuser quand je pense que la sélection de texte n'est pas une caractéristique importante et où il pourrait interférer avec d'autres actions prioritaires.
- Vous devriez envisager de sortir de ce comportement jusqu'au système, de sorte que votre application s'exécute comme prévu. C'est mon raisonnement pour ne pas vous embêter avec des trucs comme ça. Je suis sûr qu'il y en existe d'autres.
- Mais merci, je n'étais pas au courant de l'utilisateur, sélectionnez - est qu'une solution de rechange acceptable, selon la philosophie de la jQueryUI de l'équipe?
- Je n'ai aucune idée de ce que le jQuery UI équipe pense. Vous devriez leur demander si vous êtes soucieux de leur avis.
- LOL Il dit en réalité sur les docs de la page "Désactiver la sélection de texte est mauvais. Ne pas l'utiliser."... comment arrogant et peu serviable. Parfois, je pense que nous oubliez pas que chaque page HTML est un "site web" en soi, certains sont destinés à être des "applications" ou "outils" où il fait sens pour faire des choses comme désactiver la sélection de texte. Je pense que le jQuery équipe devrait être pleinement conscient de cet aspect.
- Il y a clairement les moyens de désactiver la sélection avec CSS et aussi clairement sitations où il est nécessaire. La vraie question que je l'espérais cette question/réponse permettrait de résoudre est de savoir si ou non il vaut la peine de notre collectif temps à faire quelque chose de semblable à l'appel disableSelection() comme un quick-and-dirty mesure.
- Je me demande aussi: Pourquoi appeler cette fonction obsolète et puis le garder répertoriés dans certaines officielle de jQuery UI exemples? (Exemple: jqueryui.com/draggable/#sortable ). Personnellement, je pense que cela devrait être laissé à l'utilisateur, pas le jQuery UI. C'est comme de dire que le couteau peut être utilisé de façon inappropriée, nous allons arrêter la production de celui-ci. Je pourrais avoir vraiment utilisé cette fonction dans une de mes applications au lieu de vous embêter avec des tonnes de code CSS et de l'expérimentation dans la façon de la mettre en application dans ma compliqué scripts, mais je ne savais pas qu'il existait jusqu'à ce que je l'ai trouvé dans déplaçable.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les CSS pour ce faire dans la plupart des navigateurs: http://jsfiddle.net/fQthQ/
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
Monde réel de cas dans lequel la désactivation de la sélection de texte est utile, est une
<ul>
élément 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-UI 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).
Je crois que cette fonction est obsolète parce que quelqu'un a été gêné à des sites web que désactiver la sélection, et a décidé que ce n'est pas une pratique à encourager. C'est analogue à un programmeur web refusant de soutien populaire des navigateurs existants parce qu'ils ne veulent pas encourager leur utilisation. Tel un programmeur serait mis à pied, mais vous pouvez vous en sortir avec le fait d'imposer sa philosophie sur les autres quand vous avez le pouvoir sur une bibliothèque populaire. Déconseiller cette fonction a pour effet de rendre les programmeurs qui veulent désactiver la sélection de perdre leur temps à la recherche d'une méthode alternative. En punissant les méchants, jQuery-UI sera sans doute de leur faire changer leurs façons de faire, et notre société ne sera pas inondé avec des sites web que désactiver la sélection. Donc, vous voyez, il est parfaitement bien de rationalisation, et celui qui a écrit "Désactiver la sélection de texte est mauvais. Ne pas l'utiliser." dans la documentation officielle ne peut se considérer eux-mêmes comme héroïque. Nous sommes les méchants ici.
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 quelques avantages: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 🙂