Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 为什么不推荐使用.disableSelection()?_Jquery Ui_Textselection - Fatal编程技术网

Jquery ui 为什么不推荐使用.disableSelection()?

Jquery ui 为什么不推荐使用.disableSelection()?,jquery-ui,textselection,Jquery Ui,Textselection,不推荐使用JQueryUI 1.9中的.disableSelection。我能找到的唯一解释是,字面上,和 既然没有其他的建议,我想他们的意思是,这总是不好的,但我无法理解他们的原因。双击/三次单击或以其他方式毫无意义地选择精心设计的UI应用程序会不正确地应用文本突出显示效果,并且(对我来说)会立即消除强大用户体验的错觉 桌面应用程序不会因此受到影响!桌面环境中的按钮和其他控件是像素区域,无论您对它们做了什么(或者它们坏了),它们看起来都是实心的,并且直观地起作用。web应用程序由复杂的html

不推荐使用JQueryUI 1.9中的.disableSelection。我能找到的唯一解释是,字面上,和

既然没有其他的建议,我想他们的意思是,这总是不好的,但我无法理解他们的原因。双击/三次单击或以其他方式毫无意义地选择精心设计的UI应用程序会不正确地应用文本突出显示效果,并且(对我来说)会立即消除强大用户体验的错觉

桌面应用程序不会因此受到影响!桌面环境中的按钮和其他控件是像素区域,无论您对它们做了什么(或者它们坏了),它们看起来都是实心的,并且直观地起作用。web应用程序由复杂的html框、背景、边框和图像(像素的web模拟)组成,这一事实并不能证明我们交互的屏幕元素不是原子的物理对象

在下图中,可以说一些文本应该是可选择的,例如面板中的文本段落可能是应用程序数据。但对于某些应用程序来说,其他部分(如按钮、选项卡、手风琴标题中的文本和模式对话框后面的文本)不可选择是一种合理的设计选择。这尤其适用于可拖动/可排序的行为

1) 我是否误解了他们的决定?这个建议是否比我意识到的更针对JQuery

2) 如果作为一项一般性声明,文本应始终像这样可选择,请提供更全面的解释


3) 如果我真的要这么做的话,那么在disableSelection已经被弃用的情况下,最高效、最完整、最尊重、跨浏览器、最普及的解决方案是什么呢?

您可以在大多数浏览器中使用CSS来实现这一点:

Opera当前不支持此功能


有关更多信息,请参见MDN页面:

作为CSS的替代方案
用户选择:无技术,我认为只是通过
$(document)防止双击和鼠标向下移动的默认行为有一些优点:

  • 如果用户想在元素周围拖动光标,仍然允许文本选择。只是在用户快速单击时防止烦人的文本选择
  • 更好的浏览器支持
  • jQuery团队并不反对(在代码审查中没有邪恶的目光。)

  • 禁用文本选择非常有用的一种实际情况是
    元素,其
  • 已编程为可拖动(用于排序)。拖动操作正常,除非用户拖动时选中了文本。这当然是对disableSelection()的合法使用

    我知道没有这个方法是可以做到的(否则这个方法一开始就不可能做到);但是我想使用disableSelection()的原因是为了在一个地方简洁地表达我的愿望,并让jQuery UI处理跨浏览器兼容性问题,而不是必须使用几个CSS规则和一些JS(对于IE7)的组合


    我相信这项功能不受欢迎,因为有人对禁用选择的网站感到恼火,并认为这不是他们应该鼓励的做法。这类似于web程序员拒绝支持流行的传统浏览器,因为他们不想鼓励使用它们。这样的程序员可能会被解雇,但如果你有权控制一个流行的库,你可以把你的哲学强加给别人。不推荐此功能会使想要禁用选择的程序员浪费时间寻找替代方法。通过惩罚作恶者,jQueryUI可能会让他们改变他们的方式,我们的社会不会被禁止选择的网站淹没。所以你看,有一个很好的合理化,任何人在官方文件中写下“禁用文本选择是不好的,不要使用这个。”都可以认为自己是英雄。我们是这里的坏人。

    我非常同意@WesleyMurch,希望我能给你更多+1:)我也觉得,JS不应该是前进的方向,css可能会更好

    如果您需要切换选择(在某些情况下是动态的),您可以使用jquery在类之间切换,(旧IE浏览器),您可能会问

    好吧,这是一个很好的方法(微妙的工具)来阻止人们继续使用旧的,也就是说,因为他们错过了一些东西

    (虽然IE 8/9[从%的角度来看]是一个很大的数字,但这取决于你有多在乎)


    我会像@shmiddy所解释的那样使用CSS选项,但可能会在开始时启用并禁用,但这只是我的观点:)

    我不同意用户不希望双击/三次单击选择的假设。事实上,我几乎总是选择这种方式!此外,还可以防止用户选择不应选择的UI元素。请参阅
    user select
    属性。我同意它有时是预期的操作,但是,作为应用程序设计员,当我觉得文本选择不是一个重要的特性,它可能会干扰其他更高优先级的操作时,我觉得应该禁止它。您应该考虑将该行为保留到系统中,这样您的应用程序可以按预期执行。这就是我不去搞这类事情的理由。我肯定还有其他的。哈哈,它实际上在文档页面上说“禁用文本选择是不好的。不要使用这个。”。。。多么傲慢和无助。有时我想我们忘记了并非每个HTML页面本身都是一个“网站”,有些页面是“应用程序”或“工具”,在这些页面上,禁用文本选择等操作是有意义的。我认为jQuery团队会充分意识到这一点。我还想知道:为什么称这个函数为
    * {
       -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;
    }