【问题标题】:How to prevent the double click selection from "empty" place in chrome and safari如何防止在 chrome 和 safari 中的“空”位置双击选择
【发布时间】:2014-02-12 06:23:28
【问题描述】:

我的网页出现问题。当用户在任何地方(chrome / safari)双击空白区域时,它只需选择所有空白区域并突出显示。为了避免这种情况,我使用了这个 css 属性:

body {
  overflow: hidden;
  -moz-user-select     : none;
 -khtml-user-select   : none;
 -webkit-user-select  : none;
 -o-user-select       : none;
 user-select          : none;
}

现在我也无法选择“文本”。这真是太糟了。如何使可选择变得可选择并避免空白空间..?

有什么想法吗?

屏幕截图:

Live Demo

注意:点击表格列。你不能选择文本。

【问题讨论】:

标签: javascript html css google-chrome


【解决方案1】:

为了防止双击空白空间,您可以使用以下脚本和样式。

function clearSelection() {
    if(document.selection && document.selection.empty) {
        document.selection.empty();
    } else if(window.getSelection) {
        var sel = window.getSelection();
        sel.removeAllRanges();
    }
}

对于 Chrome 和 safari 浏览器,您可以使用以下样式。

 span.no_selection {    
   -webkit-user-select: none; /*(safari, chrome) webkit */
 }

我希望它能正常工作。

【讨论】:

  • 我不能使用webkit-user-select,因为如果我使用,即使我也不能选择文本..
【解决方案2】:

编辑:看,这就是我所说的实际操作。单击时,您可以很好地选择文本。但是,双击时,CSS 规则-webkit-user-select: none; 被激活,从而防止选择“空白空间”。再次单击事件时,此规则将被删除。 JSFiddle

-webkit-user-select: none; 将禁止所有尝试单击和选择网页上的内容。这是正常的行为。

双击不是常见的用户操作,因此不必担心。但是,如果您绝对必须尝试取消此操作,您可以为页面上的所有点击创建一个事件侦听器,将其时间戳记录为变量,将大约一秒的时间长度设置为变量,然后检查下一次单击以查看其时间戳是否恰好距上次记录的单击时间戳超过一秒。如果是,e.preventDefault 事件。如果没有,请允许。

【讨论】:

  • 感谢投反对票。但是,请从之前回答的问题中查看此链接:stackoverflow.com/a/4517448/2997710
  • 我没有对你投反对票,但原始发帖人要求的是一种解决方案,通过双击网站的空白区域来消除突出显示,同时仍然能够突出显示文本这页纸。你用完全不相关的东西回答他的问题,这可能就是你被否决的原因。
  • 简单,他不是要求结束双击。
  • 为了进一步澄清,他使用了通过双击单词本身来突出显示单词的示例(双击此处查看示例)。他不想要的是允许用户通过双击围绕它的空白区域来突出显示块元素。我可以看出他的问题可能会让人有些困惑,但似乎他就是这个意思。
  • 您的想法没有错,我同意您的观点,即对 UX 几乎没有影响。我只是澄清用户一直在问什么的人,无需进一步讨论。
猜你喜欢
  • 2012-04-28
  • 2012-11-22
  • 2011-03-07
  • 2010-10-27
  • 2015-08-07
  • 2011-04-10
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多